Io e Shance stiamo guardando il sito della Apple, oggi novita’ come se piovesse. Leggo delle cose che mi sembrano arrivare dal futuro..
Sicuramente Apple ha una sezione marketing che e’ avanti anni luce rispetto alla concorrenza. Perche’ non riescono gli altri a fare frasi ad effetto come questa?
Sicuramente la fanno anche gli altri, e’ roba vecchia, bla bla bla…
Sono usciti il nuovo iMac, il nuovo portatile Macbook base, i nuovi Mac Mini (tra cui un modello Server che consuma meno di una lampadina) e il fantastico mouse multitouch.



Se funzionasse veramente così mi preoccuperei…
spero che la pressione di un tasto non sia sufficiente a causare l’innalzamento della frequenza del processore.
PS: giusto per dire quanto il marketing può essere falso.
In OSX, se si monitorizzano le attività e si tiene “in vista” il carico del processore, si vede proprio che succede così… logicamente. La pressione di n tasto genera un segnale, che ovviamente DEVE essere raccolto e processato. La frequenza di lavoro del processore è nell’ordine dei GHz, quindi 10^9 cicli/secondo, ovvero pacchetti di dati/secondo. Digitando veloci si fanno 2-3 battute al secondo… è evidente che il processore è per la massima parte del tempo inattivo in attesa di input. E se è inattivo consuma di meno.
@Sirus
Riesci a vedere il carico del processore in Windows Vista/Seven e vedere cosa succede quando digiti?
@France
Assolutamente no, al momento sono a qualche migliaio di km. da casa e lo sarò per i prossimi due mesi quindi non ho accesso diretto al mio desktop con Windows Vista ho solo il mio MacBook.
Ad ogni modo, credo e spero che nessuno dei sistemi operativi incrementi la frequenza di clock del processore solo digitando sulla tastiera; stiamo pur parlando di processori che a frequenza minima lavorano almeno ad 1 GHz e dubito fortemente che una tale frequenza di lavoro sia insufficiente per gestire l’interrupt della tastiera a la visualizzazione.
Inoltre, durante tutta la digitazione di questo post ho controllato l’occupazione del processore da parte di Safari (che sto usando per navigare) e non è mai salita sopra il 2% ed ovviamente la frequenza del processore è rimasta perennemente fissa ad 1 GHz.
Sempre più convinto che il marketing Apple giochi sull’ignoranza media degli utenti.
Hai su Snow?
Ti diro’ una cosa.
Ho aperto textedit , poi monitoraggio attivita’, in alto sul menu “vista” ho selezionato la velocita’ di aggiornamento alta di visualizzazione, poi ho selezionato textedit dal monitoraggio facendo un doppio clic in alto nel “nome” del processo. altrimenti “balla” e non riesci a vedere cosa succede
Prova tu stesso a scrivere o tener premuto una lettera ad esempio..
Si ho Snow Leopard ed ho appena fatto la prova che hai fatto tu. Digitando ad una velocità piuttosto sostenuta il processore non passa il 5% di occupazione e la frequenza non si muove minimamente da 1 GHz.
Tendendo premuta un tasto (notare che ho la ripetizione dei tasti alla massima velocità) il processore non raggiunge il 20% di occupazione ma la frequenza non varia, rimane fissa ad 1 GHz.
Continuo a pensare che il marketing Apple sia fuorviante.
PS: che la frequenza rimanga fissa direi che ha senso dato che la soglia di switch dovrebbe essere del 25% più o meno (almeno questo è quello che mi succedeva sul vecchio notebook con Windows).
@ sirus, Franco:
Attenzione: il grafico non ha la scala, quindi un incremento di attivita’ del processore molto piccolo (es 1%) puo’ essere spacciato per un picco. Cosa succede se avvii un software “pesante”?
Poi confermo i dubbi: l’attivita’ della tastiera e cio’ che ne consegue (interrupt, risveglio del processore, ecc.) non erano un problema ai tempi dell’8088 da 4.77 MHz e del keyboard controller i8042, figurarsi ora con hardware un migliaio di volte piu’ potente
Edward
@elf:
Non ho guardato il grafico, ho letto direttamente la percentuale per evitare qualsiasi problema.
Scusate ma dicono che mentre si digita sualla tastiera il processore viene “spento” o quasi. Voi state dicendo che il processore occupa risorse mentre si preme un tasto.
Non state parlando di due cose distinte?
@ Shance:
“Scusate ma dicono che mentre si digita sualla tastiera il processore viene “spento” o quasi. Voi state dicendo che il processore occupa risorse mentre si preme un tasto.
Non state parlando di due cose distinte?”
Il processore non e’ spento quando premi un tasto, anzi accade il contrario: il metodo di trasferimento e’ il Programmed Input/Output (PIO) che coinvolge il processore; se questo e’ parzialmente spento, in uno stato a basso consumo (i C state [1]), allora si “risvegliera’” per compiere l’operazione.
Nel dettaglio: quando premi un tasto, l’elettronica della tastiera memorizza il codice associato al tasto premuto (in gergo, uno scancode [2]) in un buffer interno alla periferica; periodicamente (a memoria, ogni 125 o 250 volte al secondo per una tastiera PS/2) la tastiera invia il contenuto del buffer al controller della tastiera presente sulla scheda madre (sugli “IBM compatibili” di una volta era un chip separato, il nominato Intel i8042 o un clone equivalente; da meta’ anni ‘90 in poi e’ integrato nel chipset).
A questo punto il controller della tastiera chiede di poter “dialogare” col “capo” del computer, ossia il processore: invia una richiesta di trasferimento dati al “segretario” del processore, il controller degli interrupt (rispettivamente Intel i8259A, clone o integrato nel chipset), tramite il “pulsante del citofono” a lui riservato, ossia l’interrupt assegnatogli dal progettista dell’hardware (sempre negli IBM compatibili, e’ l’IRQ 1), sul canale degli interrupt: quando il processore ha finito di eseguire gli altri compiti gia’ assegnati, si mette in attesa degli interrupt. Riceve la richiesta dal controller degli interrupt sullo stesso canale degli interrupt, autorizza il trasferimento col keyboard controller inviando un segnale di “via libera” all’interrupt controller che lo reinoltrera’ al keyboard controller e richiama la “pratica” relativa, ossia il driver del keyboard controller del sistema operativo oppure il codice del bios che svolge la stessa funzione; poi si dichiara “occupato” , ossia chiude il canale degli interrupt per ignorare le richieste contemporanee di altre periferiche e concentrarsi solo sul controller della tastiera.
Ora il keyboard controller puo’ “entrare nell’ufficio” e parlare col processore: sul bus dei dati (in passato era il bus si sistema ISA, da 10 anni a questa parte sui bus i2c, SMBUS o simili) invia il/i tasto/i premuto/i al processore che li passera’ al driver o al bios; il processore esegue le istruzioni del driver/bios, infine chiude il trasferimento, riapre il canale degli interrupt e si mette in attesa di segnali inviati dall’interrupt controller, altri segnali inviati da altre parti importanti dell’hardware (es i Non-maskable Interrupt [3]), altre richieste del sistema operativo oppure di nuovo a riposo. Al livello superiore, l’os riconoscera’ i codici dei tasti tramite il driver e li utilizzera’ per i suoi scopi: mostrarli a video, inviarli ad un programma, ecc.
Non sono entrato troppo nel dettaglio e ho volutamente semplificato un po’ l’azione dell’interrupt controller: in buona sostanza questo accade per ogni trasferimento di dati di tipo PIO, il memory mapped I/O [4] e il DMA [5] sono differenti.
Il sistema, apparentemente complicato, dura una frazione di secondo, realisticamente qualche ms: la cpu si “risveglia” dagli stati di bassissimo consumo (es C4, C5 e successivi) e raggiunge lo stato minimo per accettare gli interrupt e sostenere il trasferimento, poi ritorna al suo “letargo” parziale in attesa del prossimo risveglio.
Dire che OSX o uno dei suoi driver fa’ “risparmiare energia” al processore durante l’invio dei codici dei tasti e’, se non errato, almeno fuorviante perche’ non e’ circonstanziato: probabilmente l’os non risveglia completamente il processore (stato C0, nessun risparmio energetico) ma lo mantiene in uno stato intermedio, quindi facendolo effettivamente consumare meno del C0 ma comunque piu’ del massimo risparmio energetico. Presumo che gli altri os si comportino allo stesso modo: la mossa di Apple e’ solo marketing, niente altro.
Edward
[1] http://www.hardwaresecrets.com/article/611
[2] http://gunnarwrobel.de/wiki/Linux-and-the-keyboard.html
[3] http://en.wikipedia.org/wiki/Non-maskable_interrupt
[4] http://en.wikipedia.org/wiki/Memory-mapped_I/O
[5] http://en.wikipedia.org/wiki/Direct_memory_access
Aggiornamento: l’avviso afferma che il processore e’ rallentato fra una pressione e l’altra. Se la frequenza di funzionamento e’ la stessa (sirus lo conferma), non c’e’ nessun rallentamento: quando non lavora, la cpu entra in uno stato di risparmio energetico piu’ spinto (quindi spegne piu’ parti di se) come ho spiegato sopra ma non “rallenta” in alcun modo.
@ Franco:
Per vedere il carico del processore sotto Vista/7/2008 puoi usare xperf [1]: e’ un profiler, ossia memorizza le attivita’ di tutti i driver e componenti interni del kernel e li salva in un database; xperfview e’ il programma che apre il file e mostra il grafico degli accessi. Il driver della tastiera e’, se non sbaglio, i8042.sys
Il programma e’ molto dettagliato ma anche molto tecnico: la lettura della guida [2] e del corposo manuale [3] sono pressoche’ obbligatorie.
Per 2000/XP/2003 sono disponibili kernrate e kernview [4], che svolgono parecchie delle funzioni di xperf e xperfview.
Piccola domanda: sotto Windows ci sono le accoppiate xperf+xperfview e kernrate+kernview, sotto Linux basta abilitare il profiling (aggiungere profile=1 o =2 al boot del kernel) e usare il comando di sistema readprofile [5]: come si ottiene il profiling del kernel sotto OS X?
Edward
[1] http://msdn.microsoft.com/en-us/performance/cc825801.aspx
[2] http://msdn.microsoft.com/en-us/library/cc305229.aspx
[3] http://msdn.microsoft.com/en-us/library/cc305221.aspx
[4] http://www.microsoft.com/downloads/details.aspx?FamilyID=d6e95259-8d9d-4c22-89c4-fad382eddcd1&DisplayLang=en
[5] http://linux.die.net/man/1/readprofile
@ Shance
In realtà io parlavo di frequenza e facevo notare come la frequenza del processore non variasse mai durante la pressione dei tasti (e non varia perché il carico di lavoro è irrisorio). Ciò detto, il mio assunto sul grafico mostrato da Apple era che si trattasse di una fesseria sia nel caso indicasse il carico del processore sia nel caso indicasse l’oscillazione della frequenza.
Beh Elf… non ho parole circa la tua spiegazione e la tua immensa sapienza…
Ho trovato questo ma sinceramente non ne so assolutamente nulla…ho solo googlato…
@ Franco: di niente, puoi trovare una spiegazione piu’ dettagliata e precisa in un libro di architettura degli elaboratori come il vecchio ma valido Hennessy-Patterson. Come al solito, e’ molto-molto tecnico.
La parte interessante nel link che hai postato e’ il per-process kernel tracking (6.8.5): leggiucchiando la spiegazione, dovrebbe comportarsi in modo equivalente a xperf.
Edward