RECHNERARCHITEKTUREN RECHENBEISPIELE V1.5 – 8.3.99
ACHTUNG: Wir sind nicht perfekt, d.h auch uns können Fehler unterla...
58 downloads
242 Views
598KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
RECHNERARCHITEKTUREN RECHENBEISPIELE V1.5 – 8.3.99
ACHTUNG: Wir sind nicht perfekt, d.h auch uns können Fehler unterlaufen. Bitte machen Sie uns auf Fehler aufmerksam, wenn Sie glauben einen gefunden zu haben. Sie erreichen uns über mailto:ra.vlsivie.tuwien.ac.at oder in den Sprechstunden am Institut.
Beispiel L1: Performance Vergleichen Sie die Performance von zwei Rechnersystemen S1 ATS 90.000 S2 ATS 145.000 Folgende Ergebnisse wurden gemessen! Programm 1 2 a) b) c)
Laufzeit auf S1 11 s 4s
Laufzeit auf S2 5s 4s
Welches der beiden Systeme ist kostengünstiger (Preis ó Leistung), wenn nur Programm 1 ausgeführt wird? Welches System ist kostengünstiger (Preis ó Leistung), wenn Programm 1 und Programm 2 je einmal ausgeführt werden? Um wieviel (in Prozent)? Programm 1 besteht zu 30% aus Integer Befehlen, zu 47% aus Load und Store Befehlen und zu 23% aus anderen Befehlen. Eine neue Version von S1 ist bei gleichen Kosten bei Integer Befehlen doppelt so schnell und bei Load und Store Befehlen um 60% schneller. Welches der beiden Systeme ist kostengünstiger (Preis ó Leistung), wenn nur Programm 1 ausgeführt wird?
Lösung: PL.. K.. L.. T..
Preis/Leistung Kosten Leistung Laufzeit
a)
PL1/PL2 = K1/L1/K2/L2 = (K1*T1)/(K2*T2) = (90000*11)/(145000*5) = 1.366 S2 ist kostengünstiger PL1/PL2 = (90000*(11+4))/(145000*(5+4))=1.034 S2 ist kostengünstiger um 3.4%. Laufzeit = 11s: 30% = 3.3s, 47% = 5.17s, 23% = 2.53s. Neue Laufzeit: 3.3s/2+5.17s/1.6+2.53s = 7.41s. PL1/PL2 = (90000*7.41)/(145000*5) = 0.92 S1 ist kostengünstiger.
b) c)
Beispiel L2 Performance Von einem Instruktionssatz gibt es die Implementierung M1 und M2. Es gibt vier Klassen von Instruktionen in diesem Instruktionssatz: Klasse A B C D a) b) c)
CPI M1 [50MHz] 1.4 2 5.2 1
CPI M2 [75 MHz] 2 1.7 4 8
Häufigkeit 40% 43% 11% 6%
Geben Sie die Peak MIPS für beide Implementierungen an! Bei welcher Taktfrequenz hätte Maschine M1 dieselbe Peak Performance wie die Maschine M2? Geben Sie die durchschnittliche MIPS für beide Maschinen an für die gegebene Instruktionsmischung!
Lösung: a) PM1 = 50 PM2 = 75/1,7 = 44,11 b) 44,11 MHz c) M1 = 50/(1,4*0,4+2*0,43+5,2*0,11+1*0,06) = 24,37 M2 = 75/(2*0,4+1,7*0,43+4*0,11+8*0,06) = 30,6
Beispiel L3 Performance VLSI Design Technologies produziert den Prozessor E1822. Für die nächste, leistungsstärkere Serie, den E1822-RA, werden 3 Experten beauftragt, eine neue Architektur zu entwerfen. Das Referenzprogramm besteht aus folgenden Teilen: Teil 1 Teil 2 Teil 3 Teil 4 Teil 5
Rechne_Fließkomma() Rechne_ALU() Steuere() Speichern() Interrupts, OS Service
20% 18% 20% 20% Rest
Die drei Experten (A,B,C) kommen mit Architekturvorschlägen, die folgende Auswirkungen auf die Programmteile haben: A B C Teil 1 Faktor 2 schneller 30% langsamer Faktor 4 schneller Teil 2 Faktor 1.2 langsamer Faktor 4 schneller 20% langsamer Teil 3 bleibt gleich Faktor 2 schneller 30% schneller Teil 4 20% schneller gleich 25% langsamer Teil 5 Faktor 2.3 langsamer Faktor 3 schneller Faktor 1.2 langsamer Der Konzernchef beauftragt Sie mit der Auswertung der 3 Expertenvorschläge und eine Vergleichsstudie zu erstellen, in welcher die Beschleunigung durch die 3
Methoden als Faktor gegenübergestellt werden. Angenommen, man könnte die beiden besten Lösungen miteinander kombinieren. Welche Beschleunigung würde man erzielen? Lösung: Speedup A: 1/(0.2/2+0.18/1/1.2+0.2+0.2/1.2+0.22*2.3) = 1/1.18 = 0.841 Programm wird langsamer Speedup B: 1/(0.2*1.3+0.18/4+0.2/2+0.2+0.22/3) = 1.474 Speedup C: 1/(0.2/4+0.18*1.2+0.2/1.3+0.2*1.25+0.22*1.2) = 1.0708 Kombination von B und C => D. Speedup D: 1/(0.2/4*1.3+0.18/4*1.2+0.2/(2*1.3)+0.2*1.25+0.22/3*1.2) = 1.87 Die beiden Methoden vereint sind besser als das Produkt von Beschleunigung(B) und Beschleunigung(C)!
Beispiel P1: branch hazards Gegeben ist eine Pipeline mit fünf Stufen. Unbedingte Sprungziele werden am Ende der zweiten Stufe berechnet. Bedingte Sprungziele sind erst am Ende der dritten Stufe bekannt. Es wird die “predict-not-taken” Strategie verwendet und die ideale CPI ist 1. Die Häufigkeit von Sprungbefehlen ist: bedingte Sprünge: 20% unbedingte Sprünge: 5% Bei 60% der bedingten Sprünge wird wirklich gesprungen. Wieviel langsamer ist eine Maschine mit branch-hazards? Lösung: •
•
• • •
bedingte Sprungbefehle 20% aller Befehle sind bedingte Sprungbefehle Bei 60% ist die Vorhersage falsch Kosten bei falscher Vorhersage: 2 Zyklen unbedingte Sprungbefehle 5% aller Befehle sind unbedingte Sprungbefehle Bei 100% ist die Vorhersage falsch Kosten bei falscher Vorhersage: 1 Zyklus Ausführungszeit ohne branch-hazards ETideal = 1 Zyklus Ausführungszeit mit branch-hazards ETreal = 1+0,2*0.6*2+0.05*1 = 1.29 Zyklen ETreal/ETideal = 1.29
Die Maschine ist um 29% langsamer als die ideale Maschine.
Beispiel P2: instruction scheduling Gegeben ist ein MIPS-Prozessor mit fünfstufiger Pipeline. Forwarding ist nicht implementiert. Sprungbefehle werden in Stufe 2 ausgeführt. Im folgenden Programm müssen daher NOP-Instruktionen eingefügt werden. Optimieren Sie danach das Programm (instruction scheduling). ori or Sum: lw add addi bne
$20,$0,12 $5,$0,$0 $10,0($20) $5,$5,$10 $20,$20,-4 $20,$0,Sum
Lösung: Programm mit NOP-Instruktionen: ori or nop Sum: lw nop nop add addi nop nop bne
$20,$0,12 $5,$0,$0 $10,0($20) $5,$5,$10 $20,$20,-4 $20,$0,Sum
optimiertes Programm: ori or nop Sum: lw addi nop add bne
$20,$0,12 $5,$0,$0 $10,0($20) $20,$20,-4 $5,$5,$10 $20,$0,Sum
Beispiel P3: load-delay-slot Ordnen Sie den folgenden MIPS-Code so um, daß Pipeline-stalls vermieden werden. Forwarding ist implementiert und load-Befehle werden in Stufe 4 ausgeführt (loaddelay-slot). lw lw add sw lw lw sub sw
$1,0($2) $3,4($2) $4,$1,$3 $4,8($2) $5,0($6) $7,4($6) $8,$5,$7 $8,8($6)
Lösung: Umgeordneter Code: lw lw lw add lw sw sub sw
$1,0($2) $3,4($2) $5,0($6) $4,$1,$3 $7,4($6) $4,8($2) $8,$5,$7 $8,8($6)
Bemerkung: Bei solchen Aufgaben sind meist mehrere gleichwertige Lösungen möglich!
Beispiel P4: Timing Diagramme Gegeben ist das folgende MIPS-Programm: Lp:
ori lw mult addi bne nop
$20,$0,20 $10,0($20) $5,$5,$10 $20,$20,-4 $20,$0,Lp
Forwarding ist nicht implementiert und die Multiplikation dauert 3 Zyklen in Stufe EXE. Sprungziele werden in Stufe ID berechnet. Bei RAW-Abhängigkeiten wird die Pipeline angehalten (IF, ID), bis die Daten verfügbar sind. Zeichnen Sie ein Timing-Diagramm für das Programm.
Lösung: ori $20,$0,20 IF ID EX ME WB Lp: lw $10,0($20) IF ID st st EX ME WB mlt $5,$5,$10 IF st st ID st st EX EX EX ME WB addi $20,$20,-4 IF st st ID st st EX ME WB bne $20,$0,Lp IF st st ID st st EX ... nop IF st st abort lw $10,0($20) IF ...
Die Anzahl der Stalls ist: Die Anzahl der control hazards ist:
2+5*6 4*1
Achtung: Bei Timingdiagrammen gibts auch noch eine andere Schreibweise. Beide Arten werden bei den Tests akzeptiert. ori $20,$0,20 IF ID EX ME WB Lp: lw $10,0($20) IF st st ID EX ME WB mlt $5,$5,$10 IF st st ID EX EX EX ME WB addi $20,$20,-4 IF st st ID EX ME WB bne $20,$0,Lp IF st st ID EX ... nop IF abort lw $10,0($20) IF ...
Beispiel P5: delayed branch Gegeben ist folgende MIPS-Codesequenz: lw $1,12($0) addi $2,$0,8 loop: lw $3,0($2) addi $2,$2,-4 bne $2,$0,loop mult $1,$1,$3 ori $1,$1,1 sw $1,0($0) Die Multiplikation dauert 3 Taktzyklen in Stufe EXE. Forwarding ist implementiert. Der Sprung wird am Ende der Stufe ID ausgeführt und der Prozessor verwendet delayed-branch mit der Länge 1. • • •
Zeichnen Sie ein Taktzyklen-Diagramm für das Programm Wieviele Stalls treten bei der Abarbeitung des Programms auf? Welcher Wert steht nach der Abarbeitung des Programms an Adresse 0, wenn der Datenspeicher folgende Werte enthält: Adresse 4 8 12
Wert 2 3 4
Lösung: lw addi lw addi bne mult lw addi bne mult ori sw
$1,12($0) IF ID EX ME WB $2,$0,8 IF ID EX ME WB $3,0($2) IF ID EX ME WB $2,$2,-4 IF ID EX ME WB $2,$0,Loop IF ID EX ME $1,$1,$3 IF ID EX $3,0($2) IF ID $2,$2,-4 IF $2,$0,Loop $1,$1,$3 $1,$1,1 $1,0($0)
WB EX EX ME WB st st EX ME st st ID EX IF ID IF
WB ME EX ID IF
WB ME EX ID IF
WB EX EX ME WB st st EX ME WB st st ID EX ME WB
Es treten insgesammt 4 Stalls auf. Adresse 0 enthält den Wert 25
Beispiel P6: loop unrolling Gegeben ist folgende MIPS-Codesequenz: Lp:
or lw add sw addi bne nop
$1,$0,$0 $2,0($1) $2,$2,$3 $2,0($1) $1,$1,4 $1,$5,Lp
;load the vector element ;add the scalar in $3 ;store the result ;point the next word ;branch ;delay slot
Rollen Sie die Schleife 3 mal auf und optimieren Sie dann den Code. Der Prozessor verwendet einen branch-delay-slot und einen load-delay-slot. Forwarding ist implementiert. Register $5 enthält (3*N)*4, wobei 3*N die Anzahl der zu verarbeitenden Worte ist. Welcher Speedup wird beim optimierten Code erreicht? Lösung: Loop-unrolling ergibt: Lp:
or lw add sw lw add sw lw add sw addi bne nop
$1,$0,$0 $2,0($1) $2,$2,$3 $2,0($1) $4,4($1) $4,$4,$3 $4,4($1) $6,8($1) $6,$6,$3 $6,8($1) $1,$1,12 $1,$5,Lp
;first copy ;second copy ;third copy
Optimierter Code: Lp:
or lw lw add sw add lw sw add addi bne sw
$1,$0,$0 $2,0($1) $4,4($1) $2,$2,$3 $2,0($1) $4,$4,$3 $6,8($1) $4,4($1) $6,$6,$3 $1,$1,12 $1,$5,Lp $6,-4($1)
Speedup: • • •
ursprünglicher Code: 7 Zyklen pro Durchlauf optimierter Code: 11/3=3.67 Zyklen pro Durchlauf Speedup = 7/3.67 = 1.91
Beispiel M1: Cache & Speicherbausteine Ex. 7.18 Ihnen stehen 18 Stück 32K*8-Bit SRAMs zur Verfügung, mit denen Sie einen Instruktionscache für einen Prozessor mit 32 Bit Adreßraum bauen sollen. Wie groß kann ein direct-mapped Cache mit Blöcken, die ein Wort (32 Bit) groß sind, maximal werden (Datenspeicherkapazität in Bytes)? Zeigen Sie, wie Sie die Adresse zerlegen, um den Cache anzusprechen und beschreiben Sie, wie Sie die SRAM-Chips verwendet haben. Lösung: Was brauchen wir? Adreßbreite Blockgröße Wortbreite # Indexbits # Tagbits 1Valid-Bit pro Eintrag
A B W I T
Was wissen wir? • • • •
Adreßbreite … 32 Bit Byte-Offset … log2(B/8) Bit = O Blockgröße … 32 Bit Abhängigkeit von Adreßbreite, Index, Tag und Byte-Offset „mathematische“ Lösung Aufstellung der Abhängikeiten: Index … I Bits Tag … A-O-I Bits Cachegröße ist abhängig von der Zahl der Blöcke, die durch den Index gegeben ist. Cachegröße G = Größe für Daten + Größe für Tag + Zahl der Valid-Bits G = 2I*B + 2I*(A-O-I)+2I G = 2I(B+A-O-I+1) Zur Verfügung stehende Bits: 18*32*1024*8 = 4718592 ⇒ G = 2I(63-I) ≤ 4718592 ⇒ I = 16 ⇒
65536 Einträge (Blöcke) im Cache
⇒ T = 32-2-16 = 14 Adreßraum eines SRAMs: 32768 = 215 ⇒
jeweils 2 SRAMs parallel für kompletten Adreßraum des Index
Blockgröße ist 32 Bit ⇒ 4 solcher Blöcke nebeneinander. Gleich viele Tags wie Blöcke ⇒
jeweils zwei SRAMs parallel f. kompletten Adreßraum.
Tagbreite ist 14 Bit ⇒ zwei solcher Blöcke nebeneinander. Da die Tags nur 14 von 16 Bits belegen, kann das Valid-Bit mit den Tags in den gleichen Bausteinen abgelegt werden. Ein Bit pro Eintrag bleibt ungenutzt.
Adreßzerlegung: Tag 31 … 18
Index 17 … 2
Byte-Offset 10
Verwendung der SRAMs: 2*4 = 8 für Daten 2*2 = 4 für Tag und Valid-Bit 6 SRAMs bleiben unbenutzt. „graphische“ Lösung 32 Bit Blockgröße ⇒ 4 SRAMs nebeneinander
⇒ Verdopplung
⇒ Byte-Offset beträgt 2 Bits ⇒ Index hat Adreßbreite von SRAM (15) ⇒Tag hätte dann 15 Bits Breite ⇒ 2 SRAMs nebeneinander f. Tag ⇒Auch für Valid-Bit ist hier noch Platz ⇒ bisheriger SRAM-Verbrauch = 4+2 = 6 ⇒ erst ein Drittel! ⇒2*4 SRAMs ⇒Verdopplung des Adreßraumes ⇒Index wird um ein Bit breiter (16) ⇒Tag ist dann 14 Bit breit ⇒ 2*2 SRAMs f. Tag ⇒Valid-Bit hat immer noch Platz ⇒ SRAM-Verbrauch: 2*4+2*2=12 ⇒ weitere Verdopplung kommt nicht in Frage
Beispiel M2: Cachegrößen Ex. 7.24 Nehmen Sie an, die Adreßbreite eines Computers beträgt k Bit. Es wird Byte Adressierung verwendet. Die Cachegröße ist S Bytes, die Blockgröße B Bytes und der Cache ist A-way set-associative. B ist eine Potenz von 2, daher B = 2b. Geben Sie folgende Größen in Abhängikeit von S, B, A, b und k an: Anzahl der Sets im Cache Zahl der Index Bits in der Adresse Zahl der Bits um den Cache zu Implementieren.
Lösung: Ein Set hat A Blocks, ein Block hat B Bytes ⇒ Ein Set hat A*B Bytes. ⇒ Die Zahl der möglichen Sets im Cache beträgt S/AB. Index wird benutzt um ein Set zu adressieren ⇒ S / Adressen ⇒
AB
log2(S/AB) = # Index Bits (=log2(S/A)-b)
Die Daten selbst benötigen S*8 Bits. Tagbreite = Adreßbreite – Byte-Offset – # Indexbits = k – b – (log2(S/A)-b) = k - log2(S/A) Speicher für Tags: Tagbreite * # Sets * # Blöcke pro Set = (k - log2(S/A))*S/AB*A =S/B*(k - log2(S/A)) Cachegröße in Bit = S*8+ S/B*((k - log2(S/A))+1)
Beispiel M3: AMAT Ex. 7.15-17 AMAT
Average Memory Access Time
Durchschnittliche Speicherzugriffszeit Findet Verwendung um verschiedene Caches zu bewerten. HT MT MP
HR MR
Hit Time Speicherzugriffszeit bei einem Cache-Hit Miss Time Speicherzugriffszeit bei einem Cache-Miss Miss Penalty (Zeit, die bei einem Cache-Miss zusätzlich zur Hit-Time benötigt wird) Hit Rate Miss Rate
HR + MR = 1 MT = HT + MP
Es gibt zwei gleichwertige Formen der AMAT: AMAT = HT*HR + MT*MR = HT*HR + (HT + MP)*MR = HT*HR + HT*MR + MP*MR = HT*(HR + MR) + MP*MR = HT*1 + MP*MR = HT + MP*MR Berechnen Sie die AMAT für eine Maschine mit 2 ns Clock Cycle Time, einen Miss Penalty von 20 Clock Cycles, einer Miss Rate von 0.05 pro Instruktion und einer Cache-Zugriffszeit von einem Clock Cycle. (Annahme: Read- und Write Miss Penalties sind gleich, andere Write Stalls werden nicht berücksichtigt): Lösung: AMAT = 2 ns + (20*2*0.05)ns = 4ns Nehmen Sie an, Sie können die Miss Rate auf 0.03 pro Instruktion senken, indem Sie den Cache verdoppeln. Dadurch erhöht sich die Cache-Zugriffszeit um 20%. Verwenden Sie die AMAT um diese „Verbesserungen“ zu bewerten: Lösung: AMAT = 1.2*2 ns + (20*2*0.03) ns = 3.6 ns Wäre besser. – Aber: Verhältnis Clock Cycle Time zu Cache Access Time wurde nicht berücksichtigt! Cache Zugriffe können nur in Zeiten erfolgen, die ein ganzzahliges Vielfaches der Clock Cycle Time sind. Lösungen: • •
Clock Cycle Time wird der Cache Zugriffszeit angepaßt Cache Zugriff erfolgt in zwei Taktzyklen
Bei der ersten Möglichkeit weiß man nicht, wie sich der Miss Penalty verändert. Die zweite Möglichkeit läßt sich mit der AMAT leicht nachrechnen: AMAT = 2.4 ns + (20*2.4*0.03) ns = 3.84 ns Eindeutig besser als die ursprüngliche Konfiguration. (um 4 %) Wie sieht es in Wirklichkeit aus? Annahme:
CPI ohne Cache Misses =2 1.5 Referenzen pro Instruktion. Lösung: Execution Time = Clock Cycle Time * Intruction Count * (CPI + Cache Miss Cycles per Instruction) Execution Timeurspr. = 2*IC*(2+1.5*20*0.05)= 7 * IC Execution Timeneu = 2.4*IC*(2+1.5*20*.003) = 6.96 IC Das heißt, die Maschine mit dem verdoppelten Cache und der daraus resultierenden längeren Clock Cycle Time bringt im Gegensatz zur AMAT-Aussage (4%) nur 0.57 % Zeitgewinn.
Beispiel M4: Cachezugriff Ex. 7.20 Gegeben ist eine Serie von Speicherreferenzen als Wortadressen: 1, 4, 8, 5, 20, 17, 19, 56, 9, 11, 4, 43, 5, 6, 9, 17. Zeigen Sie die Hits und Misses und den Cache-Inhalt nach Abarbeitung dieser Zugriffe. Der Cache ist two-way set-associative. Die Blockgröße beträgt ein Wort. Der Cache hat eine Größe von 16 Worten. Verwenden Sie LRU Replacement. Lösung: ⇒ # of Sets = 16/(2*1) = 8 ⇒ 3 Index Bits ⇒ Set # = Adresse mod 8 ⇒ Wortadressen ⇒ kein Byte-Offset
Referenz 1 4 8 5 20 17 19 56 9 11 4 43 5 6 9 17
Cache Miss Miss Miss Miss Miss Miss Miss Miss Miss Miss Hit Miss Hit Miss Hit Hit
Cache Inhalt: Set# 0 1 2 3 4 5 6 7
Block Index 0 56 17
Block Index 1 8 9
43 4 5 6
11 20
Beispiel I1: Balance CPU: • 10 MIPS RAM: • 8 Bytes breit • 50ns Zykluszeit Disk: • RAID 0 • Average Seek Time = 8 ms • 7200 RPM • Transferrate = 20*106 Bytes/sec. • Controlleroverhead = 5 ms Betriebssystem: • 20000 Befehle pro Block und I/O-Zugriff • 128K-Blöcke (131072 Bytes) Die CPU soll max. zu 3% durch Disk-I/O belastet werden. Der Datentransfer findet mittels DMA statt.
a) Wo liegt der Flaschenhals dieses Systems? b) Welchen Wert f. die Blockgröße müßte das Betriebssystem haben, damit das System möglichst balanciert arbeitet? c) Bei unveränderter Blockgröße – Auf wieviele Instruktionen müßte die I/O-Routine des BS gekürzt werden? d) Welche Möglichkeiten sehen Sie noch? Lösung: a)
RAM: 50ns ⇒ 20*106 Bytes/sec 8 Bytes breit ⇒ 160*106 Bytes/sec CPU: 10*106 I/sec ⇒ 3% … 3*105 I/sec 20000 I/IO ⇒ 300000/20000 = 15 IO/sec Blockgröße = 128K ⇒ CPU schafft 1920K/sec. bei 3% Auslastung. DISK: 5ms + 8ms + 4,17ms + 6,55ms = 23,72ms ⇒ 1000/23,72 = 42,15 IO/sec 128K * 42,15 = 5396K Disk schafft 5396K/sec. ⇒ Flaschenhals liegt primär bei der CPU, gefolgt von der Disk.
b)
CPU hat wie in a) berechnet fixe Limitation auf 15 IO/s. Welche Blockgröße müßte man wählen, damit die HD auch auf 15 IO/s kommt? 5ms + 8ms + 4,17ms + B/20*10000ms = 1000/15 ⇒ Die Blockgröße müßte mind. 989934 Bytes betragen. Aber: Macht eine solche Blockgröße überhaupt Sinn? 300000
c)
/x = 42,15 ⇒ x = 7110 ⇒ Die I/O.Routine dürfte nur 7110 Befehle haben
d)
schnellere CPU DMA sollte auch mehrere aufeinanderfolgende Blöcke übertragen können (Erfolg von Applikationen abhängig).
Beipspiel I2: Ausführungszeit CPU: • 3,3 CPI • 266 MHz Taktfrequenz Disk: • Avg. Seek Time = 9ms • 5400 RPM • Avg. Transfer Rate = 3*106 Bytes/sec. • Controller Overhead = 0,7 ms Betriebssystem: • 100000 Befehle f. I/O-Zugriff • I/O wird mittels DMA durchgeführt • Blockgröße = 128KB (Basis 1024) Applikation: • 90 Mio. Instruktionen • 350 Zugriffe auf HD: 10% 4000 Bytes 82,8% 121000 Bytes 7,2% 500000 Bytes • Bekommt vom BS nur 10% CPU-Zeit • Während I/O werden andere Programme bearbeitet Andere Komponenten stellen keinen Engpaß dar. a) Berechnen Sie die Zeit vom Start des Programmes bis zum Ende des Programmes. b) Das Programm muß in 24 Sekunden fertig sein. Welche Taktfrequenz müßte der Prozessor haben? c) Welche Möglichkeiten die Ausführungszeit zu verkürzen sehen Sie noch? – Welche sind sinnvoll?
Lösung: a)
90 Mio Instruktionen (I) Applikation X Mio I für Applikations-I/O 350 Zufriffe zu je 100000 I ⇒ 35 Mio I ⇒ 125 Mio I CPU schafft 266/3,3 = 80,61 MIPS ⇒ 8,06 MIPS stehen der Applikation zur Verfügung ⇒ Ausführungszeit ohne HD-Zugriffe = 15,5 sec. Da während HD-Zugriff andere Programme ausgeführt werden, muß die Zeit f. die HD-Zugriffe dazugerechnet werden: 92,8% (325) der Zugriffe übertragen einen Block 7,2% (25) übertragen 4 Blöcke ⇒ gesamt müssen 425 Blöcke übertragen werden. Zeit für einen Block = 0,7ms + 9ms + 5,5ms + 43,6ms = 58,8ms Zeit für 425 Blöcke = 24,99 sec. ⇒ Vom Aufruf bis zum Ende des Progammes vergehen 40,5 sec.
b)
Da allein die Diskzeit bereits ca. 25 Sekunden ausmacht, kann dieses Ziel durch Beschleinigung der CPU nie erreicht werden.
Weitere Rechenbeispiele finden Sie im Text der jeweiligen Kapitel (Example/Answer). Zum Stoff gehören grundsätzlich auch die Exercises am Ende jedes Kapitels.