<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Pentium on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/pentium/</link>
    <description>Recent content in Pentium on Melabit</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Mon, 14 Jan 2019 06:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/it/tags/pentium/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Ma quanto è veloce una CPU moderna?</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2019/01/14/ma-quanto-e-veloce-una-cpu-moderna/</link>
      <pubDate>Mon, 14 Jan 2019 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2019/01/14/ma-quanto-e-veloce-una-cpu-moderna/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://cpuartworks.net/wp-content/uploads/2016/05/silicon-wafer-computer-art-Dallas-semiconductor-die.png&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; Foto: &lt;a href=&#34;http://cpuartworks.net/?page_id=26&#34;&gt;CPU Artworks&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Un anno fa proprio di questi tempi non si parlava altro che di Meltdown e di Spectre, due vulnerabilità appena scoperte che permettevano di accedere al contenuto della memoria interna del processore (la memoria &lt;em&gt;cache&lt;/em&gt;) senza averne i diritti, consentendo (almeno potenzialmente) di recuperare dati riservati come password, dati bancari, certificati digitali e quant&amp;rsquo;altro.&lt;/p&gt;&#xA;&lt;p&gt;A differenza del famoso &lt;a href=&#34;https://it.wikipedia.org/wiki/Pentium_FDIV_bug&#34;&gt;Pentium Bug&lt;/a&gt; della metà degli anni &amp;lsquo;90,&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; Meltdown e Spectre non derivano da errori di programmazione ma sono quasi delle caratteristiche intrinseche dei processori moderni, troppo veloci rispetto al resto dell&amp;rsquo;hardware che li circonda.&lt;/p&gt;&#xA;&lt;p&gt;Ma non voglio parlare qui di Meltdown e Spectre, va bene non seguire troppo l&amp;rsquo;attualità ma non esageriamo. È successo che, giusto in corrispondenza dell&amp;rsquo;anniversario, ho ritrovato sepolti sotto una pila di carte alcuni articoli che ne parlavano e, complice la reinstallazione del sistema operativo su un server, sono riuscito finalmente a leggerli, imbattendomi in un&amp;rsquo;informazione piuttosto interessante che vale la pena condividere.&lt;/p&gt;&#xA;&lt;p&gt;Come ho detto prima, i processori (o &lt;a href=&#34;https://www.computerhope.com/jargon/c/cpu.htm&#34;&gt;CPU&lt;/a&gt;, &lt;em&gt;Central Processing Unit&lt;/em&gt;) moderni sono veloci, anzi velocissimi, ad un livello che non riusciamo nemmeno ad immaginare. Per noi, già dei tempi dell&amp;rsquo;ordine del millisecondo (ms, 1 millesimo di secondo) non hanno un vero significato, sono troppo brevi rispetto all&amp;rsquo;esperienza comune. Figuriamoci cosa succede con intervalli di tempo ancora minori, a livello del microsecondo (μs, 1 milionesimo di secondo) o del nanosecondo (ns, 1 miliardesimo di secondo)!&lt;/p&gt;&#xA;&lt;p&gt;Ma se proviamo a riportare questi tempi a qualcosa che possiamo capire direttamente, le cose prendono tutta un&amp;rsquo;altra piega.&lt;/p&gt;&#xA;&lt;p&gt;In uno degli &lt;a href=&#34;https://stratechery.com/2018/meltdown-spectre-and-the-state-of-technology/&#34;&gt;articoli più interessanti&lt;/a&gt; che ho letto dopo un anno, ho trovato la tabella riprodotta qui sotto, ripresa da un &lt;a href=&#34;https://blog.codinghorror.com/the-infinite-space-between-words/&#34;&gt;post di Jeff Atwood&lt;/a&gt; (autore del famoso blog &lt;a href=&#34;https://blog.codinghorror.com/&#34;&gt;Coding Horror&lt;/a&gt;, una lettura indispensabile per chi si occupa di programmazione), che ha sua volta l&amp;rsquo;aveva tratta dal volume &lt;a href=&#34;https://www.amazon.it/Systems-Performance-Enterprise-Brendan-Gregg/dp/0133390098/&#34;&gt;&lt;em&gt;Systems Performance: Enterprise and the Cloud&lt;/em&gt;&lt;/a&gt; di Brendan Gregg (e così sono a posto con le attribuzioni).&lt;/p&gt;&#xA;&lt;p&gt;Nella tabella in questione, il tempo che una CPU odierna impiega per eseguire una operazione elementare, 0.3 nanosecondi corrispondenti a 3.3 GHz, viene scalato ad un secondo, un intervallo di tempo che siamo in grado di comprendere, &lt;em&gt;traducendo&lt;/em&gt; in modo corrispondente un gran numero di altri tempi caratteristici del funzionamento di un computer.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1 ciclo di CPU&lt;/strong&gt;&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: right&#34;&gt;&lt;strong&gt;0.3 ns&lt;/strong&gt;&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: right&#34;&gt;&lt;strong&gt;1 s&lt;/strong&gt;&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Accesso alla cache di 1 livello&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;0.9 ns&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;3 s&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Accesso alla cache di 2 livello&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;2.8 ns&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;9 s&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Accesso alla cache di 3 livello&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;12.9 ns&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;43 s&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Accesso alla memoria RAM&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;120 ns&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;6 minuti&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Trasferimento dati da un disco a stato solido&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;50-150 μs&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;2-6 giorni&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Trasferimento dati da un disco meccanico&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1-10 ms&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1-12 mesi&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Trasferimento dati su Internet: da SF a NYC&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;40 ms&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;4 anni&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Trasferimento dati su Internet: da SF alla Gran Bretagna&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;81 ms&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;8 anni&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Trasferimento dati su Internet: da SF all&amp;rsquo;Australia&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;183 ms&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;19 anni&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Riavvio di un sistema operativo virtualizzato a livello software&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;4 s&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;423 anni&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Time-out di un comando SCSI&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;30 s&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;3000 anni&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Riavvio di un sistema operativo virtualizzato a livello hardware&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;40 s&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;4000 anni&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Riavvio di un computer&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;5 m&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;32 millenni&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;em&gt;Nella tabella, SF sta per San Francisco, NYC per New York City.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Visti in questo modo i numeri sono stupefacenti. Una CPU odierna può sommare due numeri nell&amp;rsquo;equivalente di un secondo, ma deve aspettare pazientemente ben 6 minuti per ricevere i dati dalla memoria RAM del computer (una memoria che viene considerata velocissima) e fino a una settimana per riceverli da un già veloce disco a stato solido. Non parliamo nemmeno di quello che succede con un disco meccanico, che ha tempi di trasferimento corrispondenti a quelli dell&amp;rsquo;esercito di Cesare in viaggio verso la Gallia. E per una CPU il riavvio di un computer è una vera iattura: su questa scala temporale equivale ad aspettare che l&amp;rsquo;uomo moderno esca dal Paleolitico ed arrivi fino ad oggi.&lt;/p&gt;&#xA;&lt;p&gt;Non so voi, ma quando vedo le cose in questa prospettiva non posso che levarmi il cappello davanti a chi progetta questi oggetti meravigliosi.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Molto interessante questo articolo su Science, &lt;a href=&#34;http://science.sciencemag.org/content/267/5195/175&#34;&gt;How Number Theory Got the Best of the Pentium Chip&lt;/a&gt;, che tratta degli aspetti matematici dietro la scoperta del Pentium Bug.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
  </channel>
</rss>
