Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione...

34
Architettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni

Transcript of Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione...

Page 1: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Architettura degli Elaboratori

Barbara Masucci

Valutazione delle Prestazioni

Page 2: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Punto della situazione Ø  Abbiamo studiato

Ø  Una prima implementazione hardware (a ciclo singolo) di un sottoinsieme dell’IS del MIPS e visto che è inefficiente

Ø  Una seconda implementazione, più efficiente, basata su pipeline

Ø  Obiettivo di oggi Ø  OGGI: Comprendere come valutare le prestazioni di un

elaboratore

Page 3: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Prestazioni di un elaboratore

Ø  Valutare le prestazioni di un elaboratore è un compito complesso

Ø  Bisogna innanzitutto stabilire cosa si intende misurare, e in che modo

Ø  Esistono diverse metriche e portano a risultati diversi Ø  Ad esempio, se siamo interessati alla velocità di un aereo, cosa

ci interessa? Ø  Trasportare un singolo passeggero da un luogo a un altro nel minor tempo

possibile Ø  Trasportare 450 passeggeri da un luogo a un altro nel minor tempo

possibile

Page 4: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Metriche diverse, risultati diversi

Trasportare un singolo passeggero da un luogo a un altro nel minor tempo possibile

Trasportare 450 passeggeri da un luogo a un altro nel minor tempo possibile

Page 5: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Prestazioni di un elaboratore

Ø  Analogamente, possiamo usare metriche differenti per valutare le prestazioni di un elaboratore Ø  Al singolo utente interessa ridurre il tempo di esecuzione di

un task Ø  Al gestore di un centro di calcolo interessa aumentare il

numero di task eseguiti nell’unità di tempo (throughput)

Page 6: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Ø  In questo corso, definiremo le prestazioni soprattutto in termini di tempo di esecuzione

Ø  Per un elaboratore X vale la relazione PrestazioniX = 1/Tempo di esecuzioneX

Ø Quindi, dati due elaboratori X e Y,

PrestazioniX ≥ PrestazioniY se e solo se Tempo di esecuzioneX ≤ Tempo di esecuzioneY

Prestazioni di un elaboratore

Page 7: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Ø Analogamente, diremo che X è n volte più veloce di Y per indicare che

PrestazioniX /PrestazioniY = n Ø  Esempio:

Ø Se X esegue un task in 10 sec e Y esegue lo stesso task in 15 sec, quanto è più veloce X rispetto a Y?

Ø  Basta calcolare il rapporto PrestazioniX /PrestazioniY = Tempo di esecuzioneY /Tempo di esecuzioneX

= 15/10 = 1,5

Ø Quindi X è 1,5 volte più veloce di Y

Prestazioni di un elaboratore

Page 8: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Tempo di esecuzione Ø Abbiamo visto che le prestazioni di un elaboratore sono

legate al tempo di esecuzione Ø Tuttavia, questa grandezza può essere definita in modi

diversi Ø Tempo assoluto di esecuzione di un programma: tempo totale

richiesto per completare un programma Ø  Comprende i tempi per l’accesso al disco, l’input/output, etc

Ø Tempo di CPU relativo ad un programma: tempo effettivo durante il quale la CPU ha lavorato su quel programma Ø Non comprende i tempi per l’accesso al disco, l’input/output, Ø Non comprende il tempo speso dalla CPU per altri programmi gestiti in

contemporanea

Page 9: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Tempo di CPU Ø  Il tempo di CPU relativo ad un programma viene definito

nel modo seguente

Tempo CPU Programma = # cicli clock CPU X Periodo Ciclo Clock = # cicli clock CPU / Frequenza Clock

Ø  Il periodo di clock è il tempo necessario per completare un ciclo di clock e si misura in secondi (s) Ø  picosecondi: 1 ps = 10-12 s Ø  nanosecondi: 1 ns = 10-9 s

Ø  La frequenza di clock è l’inversa del periodo del ciclo di clock e si misura in Hertz (cicli al secondo) Ø Giga Hertz: 1GHz = 109Hz = 109 cicli/s

Page 10: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Tempo di CPU Ø  Cosa può fare il progettista hardware per migliorare le

prestazioni?

Tempo CPU Programma = # cicli clock CPU X Periodo Ciclo Clock

Ø Due possibilità Ø  Ridurre il numero di cicli di clock necessari per eseguire un

programma Ø  Ridurre la durata (periodo) del ciclo di clock Ø Spesso ridurre una di queste due grandezze corrisponde ad

aumentare l’altra: necessario trovare un compromesso

Page 11: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esempio Ø Si consideri un programma eseguito in 10 secondi dal

calcolatore A, dotato di un clock a 2 GHz Ø Si ha

Tempo CPUA = # cicli clock CPUA / Frequenza ClockA

Quindi 10 secondi = # cicli clock CPUA / 2x109 Hz

Da cui # cicli clock CPUA = 20 x 109 cicli

Page 12: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esempio Ø Supponiamo di poter progettare un calcolatore B, in cui il

numero di cicli di clock possa essere aumentato di un fattore 1,2 rispetto al calcolatore A

Ø Quale deve essere la frequenza di clock di B, per poter eseguire il programma in 6 secondi?

Tempo CPUB = # cicli clock CPUB / Frequenza ClockB

= 1,2 x # cicli clock CPUA / Frequenza ClockB

= 1,2 x 20 x 109 cicli / Frequenza ClockB

Da cui 6 secondi = 1,2 x 20 x 109 cicli / Frequenza ClockB

Pertanto Frequenza ClockB = 1,2 x 20 x 109 cicli / 6 secondi = 4 x 109 cicli / sec = 4 GHz

Page 13: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Misura delle prestazioni associate alle istruzioni

Ø  Il tempo di esecuzione richiesto da un programma dipende dal numero di istruzioni presenti nel programma

Ø Tale numero va moltiplicato per il numero medio di Cicli di clock Per Istruzione (CPI) Ø Si considera il numero medio perché istruzioni diverse hanno

tempi di esecuzione diversi Ø  E’ una metrica utile per confrontare le prestazioni di due

calcolatori nell’esecuzione dello stesso programma Ø  Possiamo calcolare quindi il numero di cicli di clock

necessari per l’esecuzione di un programma # cicli clock CPU = # istruzioni programma X CPI

Page 14: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esempio Ø Si considerino due diverse implementazioni dello stesso

set comprendente I istruzioni Ø  Calcolatore A: ciclo di clock=250 ps e CPI= 2,0 Ø  Calcolatore B: ciclo di clock=500 ps e CPI= 1,2

Ø Quale dei due calcolatori è più veloce nell’esecuzione del programma, e di quanto?

Page 15: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esempio Ø Architettura A

Tempo CPUA = # cicli clock CPUA X Periodo ClockA

= # istruzioni programma X CPIA X Periodo ClockA

= I X 2,0 X 250 ps = I X 500 ps

Ø Architettura B Tempo CPUB = # cicli clock CPUB X Periodo ClockB

= # istruzioni programma X CPIB X Periodo ClockB

= I X 1,2 X 500 ps = I X 600 ps

Ø  Quindi A è più veloce di B di un fattore pari a PrestazioniA /PrestazioniB = Tempo CPUB /Tempo CPUA

= 600/500 = 1,2

Page 16: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

L’equazione classica di misura delle prestazioni

Ø Siamo ora in grado di scrivere l’equazione classica per la misura delle prestazioni

Tempo CPU = # Cicli di clock / Frequenza Clock = # istruzioni programma X CPI / Frequenza Clock

Ø  L’equazione evidenzia i tre fattori principali che

influenzano le prestazioni: Ø # istruzioni programma Ø # medio cicli di clock per istruzione (CPI) Ø  frequenza di clock

Page 17: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esempio Ø Un progettista di compilatori deve scegliere quale tra

due sequenze di codice implementare su un certo calcolatore Ø  Ciascuna sequenza richiede un numero

diverso di istruzioni di tre tipi (A,B,C)

Ø  Ciascuna istruzione ha un diverso CPI specificato nella seguente tabella

Ø Quale delle due sequenze sarà eseguita più velocemente?

Page 18: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esempio Ø  Innanzitutto notiamo che

Ø  La sequenza 1 richiede 5 istruzioni Ø  La sequenza 2 richiede 6 istruzioni

Ø  Calcoliamo il numero di cicli di clock richiesti da ciascuna sequenza usando la formula

# cicli clock CPU = # istruzioni programma X CPI

Ø Quindi # cicli clock CPU1 = (2 X 1) + (1 X 2) + (2 X 3) = 10 # cicli clock CPU2 = (4 X 1) + (1 X 2) + (1 X 3) = 9

pertanto, la seconda sequenza sarà eseguita più velocemente della prima

Page 19: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Misurare le Prestazioni Ø Abbiamo visto che per valutare le prestazioni di un

calcolatore bisogna considerare il tempo di CPU necessario per l’esecuzione di un programma

Ø  Esso dipende da tre fattori Ø # istruzioni programma Ø # medio cicli di clock per istruzione (CPI) Ø  frequenza di clock

Ø  I primi due fattori dipendono da diverse componenti Ø Algoritmo utilizzato Ø  Linguaggio di programmazione ad alto livello in cui è codificato

l’algoritmo Ø  Compilatore Ø Architettura dell’insieme di istruzioni

Page 20: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 1.a Ø Si considerino tre diversi processori A, B, C che

eseguono lo stesso programma (con I istruzioni) Ø  Processore A

Ø  Frequenza di clock: 3 GHz Ø  CPI: 1,5

Ø  Processore B Ø  Frequenza di clock: 2,5 GHz Ø  CPI: 1,0

Ø  Processore C Ø  Frequenza di clock: 4 GHz Ø  CPI: 2,2

Ø Quale processore ha le prestazioni migliori, espresse in istruzioni al secondo?

Page 21: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 1.a: Soluzione Ø  Processore A

Tempo CPUA = # cicli clock CPUA / Frequenza ClockA

= # istruzioni programma X CPIA /Frequenza ClockA

= (I X 1,5) / (3 GHz) Ø  Processore B

Tempo CPUB = # cicli clock CPUB / Frequenza ClockB

= # istruzioni programma X CPIB / Frequenza ClockB

= (I X 1,0) / (2,5 GHz) Ø  Processore C

Tempo CPUC = # cicli clock CPUC / Frequenza ClockB

= # istruzioni programma X CPIC / Frequenza ClockC

= (I X 2,2) / (4,0 GHz)

Page 22: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 1.a: Soluzione Poiché la traccia richiede che le prestazioni siano espresse in termini di istruzioni al secondo, allora bisogna calcolare il numero di istruzioni I quando il Tempo CPU è pari ad 1 secondo: Ø  Prestazioni del processore A IA = (3,0 GHz) X 1 / (1,5) = 3,0 X 109 / 1,5 = 2,0 X 109 istruzioni al sec. Ø  Prestazioni del processore B IB = (2,5 GHz) X 1 / (1,0) = 2,5 X 109 / 1,0 = 2,5 X 109 istruzioni al sec. Ø  Prestazioni del processore C IC = (4,0 GHz) X 1 / (2,2) = 4,0 X 109 / 2,2 = 1,8 X 109 istruzioni al sec.

Ø Il processore B ha le prestazioni migliori

Page 23: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 1.a: Soluzione Ø  B è più veloce di A di un fattore pari a

PrestazioniB /PrestazioniA = 2,5/2

= 1,25 Ø  B è più veloce di C di un fattore pari a

PrestazioniB /PrestazioniC = 2,5/1,8

= 1,38

Page 24: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 1.b Ø Supponendo che tutti e tre i processori eseguano lo

stesso programma in 10 secondi, determinare il numero di cicli di clock usati da ciascun processore Ø  Processore A

Ø  Frequenza di clock: 3 GHz Ø  CPI: 1,5

Ø  Processore B Ø  Frequenza di clock: 2,5 GHz Ø  CPI: 1,0

Ø  Processore C Ø  Frequenza di clock: 4 GHz Ø  CPI: 2,2

Page 25: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 1.b: Soluzione Ø  Processore A

# cicli clock CPUA = Tempo CPUA X Frequenza ClockA

= 10 s X 3 GHz = 30 s X 109 cicli/s = 30 X 109 cicli

Ø  Processore B # cicli clock CPUB = Tempo CPUB X Frequenza ClockB

= 10 s X 2,5 GHz = 25 X 109 cicli

Ø  Processore C # cicli clock CPUC = Tempo CPUC X Frequenza ClockC

= 10 s X 4 GHz = 40 X 109 cicli

Page 26: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 2.a Ø Si considerino due diverse implementazioni dello

stesso insieme di istruzioni dei tipi seguenti: A, B, C,D Ø  Prima implementazione (P1)

Ø  Frequenza di clock: 2,5 GHz Ø  CPI: (A: 1, B: 2, C: 3, D:3)

Ø Seconda implementazione (P2) Ø  Frequenza di clock: 3 GHz Ø  CPI: (A: 2, B: 2, C: 2, D:2)

Ø Si consideri un programma con 106 istruzioni così suddivise: 10% tipo A, 20% tipo B, 50% tipo C, 20% tipo D

Ø Si determini il numero di cicli di clock richiesti dalle due implementazioni

Page 27: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 2.a: Soluzione Ø  Innanzitutto calcoliamo il numero di istruzioni di ciascun tipo

Ø  Tipo A: 10% di 106 =106 X 10 /100 = 105

Ø  Tipo B: 20% di 106 =106 X 20 /100 = 2 X 105

Ø  Tipo C: 50% di 106 =106 X 50 /100 = 5 X 105

Ø  Tipo D: 20% di 106 =106 X 20 /100 = 2 X 105 Ø  Poi calcoliamo il numero di cicli di clock richiesti dalle due

implementazioni usando la formula # cicli clock = # istruzioni programma X CPI

Ø  Quindi # cicli clock P1 = (105 X 1) + (2 X 105 X 2) + (5 X 105 X 3) + (2 X 105 X 3)

= 26 X 105 cicli # cicli clock P2 = (105 X 2) + (2 X 105 X 2) + (5 X 105 X 2) + (2 X 105 X 2)

= 20 X 105 cicli pertanto, la seconda implementazione è più veloce

Page 28: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 2.b Ø Si considerino due diverse implementazioni dello

stesso insieme di istruzioni dei tipi seguenti: A, B, C,D Ø  Prima implementazione (P1)

Ø  Frequenza di clock: 2,5 GHz Ø  CPI: (A: 1, B: 2, C: 3, D:3)

Ø Seconda implementazione (P2) Ø  Frequenza di clock: 3 GHz Ø  CPI: (A: 2, B: 2, C: 2, D:2)

Ø Si consideri un programma con 106 istruzioni così suddivise: 10% tipo A, 20% tipo B, 50% tipo C, 20% tipo D

Ø Si determini il tempo di CPU per ciascuna delle due implementazioni

Page 29: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 2.b: Soluzione Ø  Calcoliamo il tempo di CPU per ciascuna delle due

implementazioni Tempo CPUP1 = # cicli clock CPUP1 / Frequenza ClockP1

= (26 X 105 cicli) / (2,5 X 109 Hz) = 10,4 X 10-4 s

Tempo CPUP2 = # cicli clock CPUP2 / Frequenza ClockP2

= (20 X 105 cicli) / (3 X 109 Hz) = 6,66 X 10-4 s

Ø Anche da qui si vede che la seconda implementazione è più veloce

Page 30: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 3.a Ø Si considerino due diversi compilatori A e B per lo

stesso programma Ø  Compilatore A

Ø Numero istruzioni prodotte: 109 Ø Tempo di esecuzione: 1,1 secondi

Ø  Compilatore B Ø Numero istruzioni prodotte: 1,2 X 109 Ø Tempo di esecuzione: 1,5 secondi

Ø Si consideri un processore con periodo di clock pari a 1 ns (quindi, frequenza di clock pari a 109 Hz)

Ø Si determini il CPI per ciascuno dei due codici compilati

Page 31: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 3.a: Soluzione Ø  Calcoliamo il CPI per ciascuno dei due codici compilati

usando la formula Tempo CPU = # istruzioni programma X CPI / Frequenza Clock

Ø Si ha CPI Compilatore A = Tempo CPUA X Frequenza Clock /#istruzioniA

= (1,1 s X 109 Hz) / 109 = 1,1 cicli

CPI Compilatore B = Tempo CPUB X Frequenza Clock /#istruzioniB

= (1,5 s X 109 Hz) / (1,2 X 109) = 1,25 cicli

Page 32: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 3.b Ø Supponiamo che venga sviluppato un terzo

compilatore (C) Ø  Compilatore A

Ø Numero istruzioni prodotte: 109 Ø Tempo di esecuzione: 1,1 secondi

Ø  Compilatore B Ø Numero istruzioni prodotte: 1,2 X 109 Ø Tempo di esecuzione: 1,5 secondi

Ø  Compilatore C Ø Numero istruzioni prodotte: 600 X 106 Ø  CPI: 1,1

Ø Quale sarà lo speedup sul tempo di esecuzione rispetto ai due compilatori A e B (cioè quanto C è più veloce di A e di B)?

Page 33: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Esercizio 3.b: Soluzione Ø Dobbiamo innanzitutto calcolare il tempo di

esecuzione per il terzo compilatore Tempo CPUC = # istruzioni programmaC X CPIC / Frequenza Clock

= (600 X 106 X 1,1 cicli) / 109 Hz = 0,66 s

Ø Ora possiamo calcolare lo speedup sul tempo di esecuzione rispetto ai due compilatori A e B

Tempo CPUA / Tempo CPUC = 1,1 / 0,66 = 1,67

Tempo CPUB / Tempo CPUC = 1,5 / 0,66 = 2,27

Page 34: Architettura degli Elaboratori - UNISAArchitettura degli Elaboratori Barbara Masucci Valutazione delle Prestazioni . Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione

Riepilogo e riferimenti Ø  Abbiamo visto l’equazione classica per la misura delle

prestazioni di un calcolatore Ø  [PH] par. 1.6