Allora... Incominciamo...
Primo: le novità dello step E:
GLI ERRATA LI METTO IN UN SECONDO POST. Ho spezzato per leggibilità e per iniziare a dare qualcosa in pasto a voi...
1.5.5 Changes for Revision E
See the following references for information about changes for this revision.
• Changes that may result in BIOS modifications.
• 2.4.2.1.1 [Core Performance Boost (CPB)]
• F2x[1, 0]90[DisDllShutdownSR].
• F2x10C.
• Table 100.
• F3xA4[PerStepTimeDn, TmpMaxDiffUp, PerStepTimeUp].
• F3xA8[PopDownPstate, CacheFlushPopDownEn].
• F3xDC[CacheFlushOnHaltTmr].
• F3x188[EnStpGntOnFlushMaskWakeup].
• F4x15C.
• F4x16C.
• F4x1[9C, 94, 8C, 84]_x[D5, C5][TxLs23ClkGateEn].
• MSRC001_0055.
• MSRC001_0073.
• Other changes:
• 2.4.2.1.2 [Core P-state Naming and Numbering].
• 2.4.2.1.3 [Core P-state Control].
• F3x1F0[MaxSwPstateCpuCof].
• CPUID Fn[8000_0000, 0000_0000]_EAX[LFuncStd].
• CPUID Fn0000_0006.
• CPUID Fn8000_0007[CPB].
• MSR0000_00E7.
• MSR0000_00E8.
• MSRC001_0015[EffFreqCntMwait, CpbDis].
In dettaglio:
• 2.4.2.1.1 [Core Performance Boost (CPB)]
E' il Turbo boost. In sintesi:
1) non è supportato su sitemi single plane, quindi AM2 lisci. QUESTO LASCIA SUPPORRE CHE IL THUBAN SI POSSA MONTARE SU SCHEDE AM2, ma senza Turbo boost...
2) la sua presenza è indicata da un bit di funzione CPUID.
3) il turbo è abilitato solo se tutte le condizioni seguenti sono verificate:
3.a) CacheFlushPopDownEn deve essere abilitato (vedi dopo per una spiegazione di cosa sia)
3.b) EnStpGntOnFlushMaskWakeup deve essere abilitato (vedi dopo per una spiegazione di cosa sia)
3.c) il turbo deve essere abilitato (ovvio...

)
3.d) il numero di stati turbo deve essere 1 (in futuro probabilmente ce ne saranno di più)
3.e) il numero di core che devono essere spenti per attivare il turbo deve essere maggiore di zero. Questo parametro non sempre è modificabile. E' il famoso numero di core spenti necessari per attivare il turbo.
4) Tutti i P-states, compresi quelli del turbo, vanno specificati come per le vecchie cpu. Solo che ora ce ne sarà uno in più.
5) E' supportato un solo stato turbo.
6) Lo stato turbo DEVE avere un clock maggiore del P0, altrimenti il turbo non si attiva.
7) Lo stato boosted DEVE essere nascosto al SO. Quindi il BIOS non deve aggiungere lo stato boosted alla tabella dei p-state supportati. In pratica se viene listato tra gli stati, il driver della CPU si incasina...
• F2x[1, 0]90[DisDllShutdownSR].
Come per il C3, c'è questo stato di risparmio energetico della RAM che consente di disabilitare il DLL durante il self refresh mode della RAM.
• F2x10C.
Solo per il C3 e lo step E è possibile spostare il frame buffer della scheda video in altre locazioni...
• Table 100.
cambiamenti per la tabella degli stati ACPI per lo step E
• F3xA4[PerStepTimeDn, TmpMaxDiffUp, PerStepTimeUp].
cambiamenti per il misuratore di temperatura nello step E
• F3xA8[PopDownPstate, CacheFlushPopDownEn]
Queste impostazioni, specifiche dello step E e necessarie per abilitare il turbo boost, attivano la seguente caratteristica: se ci si trova in uno stato di risparmio energetico (quindi non C0 che è la piena potenza), quando un core svuota le caches L1 e L2 passa automaticamente a un P-state impostato da questa impostazione. Questo consente di abbassare il consumo di questi core e tramite un'altra impostazione che è spiegata dopo, consente di non svegliare queste CPU per vedere cosa hanno nelle caches, appunto perchè sono state svuotate.
• F3xDC[CacheFlushOnHaltTmr]
Questo è il timer che si deve settare per dire dopo quanto tempo una CPU in IDLE deve svuotare le caches. Sono aggiunti i valori consigliati per lo step E con e senza turbo boost abilitato.
• F3x188[EnStpGntOnFlushMaskWakeup]
Questo è il bit che specifica se svegliare o meno i cores per leggere la loro L1 e L2. Se attivato li sveglia solo se le caches non sono vuote. Lo step E supporta questa feature ed è consigliato abilitarla.
• F4x15C e F4x16C
Sono i registri che controllano il turbo boost. Ci sono vari bit:
1) BoostLock. E' un bit che dice se il turbo mode è bloccato o meno (per i BE ovviamente sarà sbloccato)
2) NumBoostStates. Specifica quanti stati sono boosted. Attualmente è supportato un solo stato. Bloccato se Boostlock=1.
3) BoostSrc. E' due bit. Attualmente si usano solo 2 combinazioni per abilitare o meno il boost. Dal nome del flag, (boost source) è possibile che in futuro le altre combinazioni siano usate per attivare turbo boost più sofisticati.
4) CstateCnt. 3 bit. Specifica quanti core devono essere in idle per far attivare il turbo mode. E' bloccato per CPU non BE.
• F4x1[9C, 94, 8C, 84]_x[D5, C5][TxLs23ClkGateEn]
Risparmio energetico dei link HT supportati fin dallo step C
• MSRC001_0055
Registro per configurare messaggi per risparmio energetico delle perifgeriche quando la CPU è IDLE
• MSRC001_0073
Fino ad adesso per mandare un core a riposo si poteva eseguire l'istruzione HLT. Con lo step E si può richiedere un C-state leggendo una certa locazione di I/O specificata da questo registro. Immagio che il vantaggio sia che con HLT il processore è messo a riposo, mentre così il software continua con il C-state richiesto. Così il software (a questo punto il driver della CPU, magari in concerto con AOD o K10 stat, quando lo aggiornaranno) potrà variare dinamicamente lo stato di risparmio energetico senza usare l'istruzione HLT che causa la sospensione del processo.
• Other changes:
• 2.4.2.1.2 [Core P-state Naming and Numbering]
Qui è specificato come si chiamano i vari stati con turbo abilitato o meno.
• 2.4.2.1.3 [Core P-state Control]
Questo specifica come richiedere i P-state. Il turbo NON può essere richiesto: scatta solo se si è nello stato P0 e se le condizioni lo consentono.
IMPORTANTE: il numero di P-state totali è sempre 5. Se è attivato il turbo boost, si perde l'uso di uno dei P-state, che diventa quello del turbo.
• F3x1F0[MaxSwPstateCpuCof]
E' in sola lettura. Specifca la massima frequenza impostabile per un core (00 per CPU BE che vuol dire illimitato)
• CPUID Fn[8000_0000, 0000_0000]_EAX[LFuncStd]
Sono state aggiunte funzioni aggiuntive per le nuove cose dello step E. Questo registro dice quante funzioni CPUID ci sono.
• CPUID Fn0000_0006
Indica la presenza (solo sullo step E) della funzionalità per misurare il clock della CPU.
• CPUID Fn8000_0007[CPB]
Aggiunto il bit che indica la presenza del turbo boost.
• MSR0000_00E7, MSR0000_00E8
funzionalità per misurare il clock della CPU.
• MSRC001_0015[EffFreqCntMwait, CpbDis]
EffFreqCntMwait=1 abilita la funzione per misurare il clock.
CpbDis=1 disabilita turbo boost. 0=abilitato.
FINE PARTE PRIMA:
In lavorazione la seconda parte sugli ERRATA...
Ho spezzato per potervi proporre al più presto le novità...
