+ All Categories
Home > Documents > Rechnerarchitektur Rechenbeispiele

Rechnerarchitektur Rechenbeispiele

Date post: 06-Jan-2017
Category:
Upload: buidan
View: 214 times
Download: 1 times
Share this document with a friend
18
RECHNERARCHITEKTUREN RECHENBEISPIELE V1.5 – 8.3.99
Transcript
Page 1: Rechnerarchitektur Rechenbeispiele

RECHNERARCHITEKTUREN

RECHENBEISPIELE

V1.5 – 8.3.99

Page 2: Rechnerarchitektur Rechenbeispiele

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 Laufzeit auf S1 Laufzeit auf S2 1 11 s 5 s 2 4 s 4 s

a) Welches der beiden Systeme ist kostengünstiger (Preis ó Leistung), wenn nur

Programm 1 ausgeführt wird? b) Welches System ist kostengünstiger (Preis ó Leistung), wenn Programm 1

und Programm 2 je einmal ausgeführt werden? Um wieviel (in Prozent)? c) 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.. Preis/Leistung K.. Kosten L.. Leistung T.. Laufzeit a) PL1/PL2 = K1/L1/K2/L2 = (K1*T1)/(K2*T2) =

(90000*11)/(145000*5) = 1.366 S2 ist kostengünstiger

b) PL1/PL2 = (90000*(11+4))/(145000*(5+4))=1.034 S2 ist kostengünstiger um 3.4%.

c) 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.

Page 3: Rechnerarchitektur Rechenbeispiele

Beispiel L2 Performance Von einem Instruktionssatz gibt es die Implementierung M1 und M2. Es gibt vier Klassen von Instruktionen in diesem Instruktionssatz: Klasse CPI M1 [50MHz] CPI M2 [75 MHz] Häufigkeit A 1.4 2 40% B 2 1.7 43% C 5.2 4 11% D 1 8 6% a) Geben Sie die Peak MIPS für beide Implementierungen an! b) Bei welcher Taktfrequenz hätte Maschine M1 dieselbe Peak Performance wie

die Maschine M2? c) 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 Rechne_Fließkomma() 20% Teil 2 Rechne_ALU() 18% Teil 3 Steuere() 20% Teil 4 Speichern() 20% Teil 5 Interrupts, OS Service 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

Page 4: Rechnerarchitektur Rechenbeispiele

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.

Page 5: Rechnerarchitektur Rechenbeispiele

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 $20,$0,12 or $5,$0,$0 Sum: lw $10,0($20) add $5,$5,$10 addi $20,$20,-4 bne $20,$0,Sum

Lösung: Programm mit NOP-Instruktionen: ori $20,$0,12 or $5,$0,$0 nop Sum: lw $10,0($20) nop nop add $5,$5,$10 addi $20,$20,-4 nop nop bne $20,$0,Sum optimiertes Programm: ori $20,$0,12 or $5,$0,$0 nop Sum: lw $10,0($20) addi $20,$20,-4 nop add $5,$5,$10 bne $20,$0,Sum

Page 6: Rechnerarchitektur Rechenbeispiele

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 (load-delay-slot). lw $1,0($2) lw $3,4($2) add $4,$1,$3 sw $4,8($2) lw $5,0($6) lw $7,4($6) sub $8,$5,$7 sw $8,8($6)

Lösung: Umgeordneter Code: lw $1,0($2) lw $3,4($2) lw $5,0($6) add $4,$1,$3 lw $7,4($6) sw $4,8($2) sub $8,$5,$7 sw $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: ori $20,$0,20 Lp: lw $10,0($20) mult $5,$5,$10 addi $20,$20,-4 bne $20,$0,Lp nop 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.

Page 7: Rechnerarchitektur Rechenbeispiele

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: 2+5*6 Die Anzahl der control hazards ist: 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 Wert 4 2 8 3

12 4

Page 8: Rechnerarchitektur Rechenbeispiele

Lösung: lw $1,12($0) IF ID EX ME WB addi $2,$0,8 IF ID EX ME WB lw $3,0($2) IF ID EX ME WB addi $2,$2,-4 IF ID EX ME WB bne $2,$0,Loop IF ID EX ME WB mult $1,$1,$3 IF ID EX EX EX ME WB lw $3,0($2) IF ID st st EX ME WB addi $2,$2,-4 IF st st ID EX ME WB bne $2,$0,Loop IF ID EX ME WB mult $1,$1,$3 IF ID EX EX EX ME WB ori $1,$1,1 IF ID st st EX ME WB sw $1,0($0) IF 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: or $1,$0,$0 Lp: lw $2,0($1) ;load the vector element add $2,$2,$3 ;add the scalar in $3 sw $2,0($1) ;store the result addi $1,$1,4 ;point the next word bne $1,$5,Lp ;branch nop ;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: or $1,$0,$0 Lp: lw $2,0($1) ;first copy add $2,$2,$3 sw $2,0($1) lw $4,4($1) ;second copy add $4,$4,$3 sw $4,4($1) lw $6,8($1) ;third copy add $6,$6,$3 sw $6,8($1) addi $1,$1,12 bne $1,$5,Lp nop

Page 9: Rechnerarchitektur Rechenbeispiele

Optimierter Code: or $1,$0,$0 Lp: lw $2,0($1) lw $4,4($1) add $2,$2,$3 sw $2,0($1) add $4,$4,$3 lw $6,8($1) sw $4,4($1) add $6,$6,$3 addi $1,$1,12 bne $1,$5,Lp sw $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 A Blockgröße B Wortbreite W # Indexbits I # Tagbits T 1Valid-Bit pro Eintrag

Page 10: Rechnerarchitektur Rechenbeispiele

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.

Page 11: Rechnerarchitektur Rechenbeispiele

Adreßzerlegung: Tag Index Byte-Offset 31 … 18 17 … 2 1 0

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 ⇒ 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! ⇒ Verdopplung ⇒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.

Page 12: Rechnerarchitektur Rechenbeispiele

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/AB Adressen ⇒ 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 Hit Time

Speicherzugriffszeit bei einem Cache-Hit MT Miss Time

Speicherzugriffszeit bei einem Cache-Miss MP Miss Penalty

(Zeit, die bei einem Cache-Miss zusätzlich zur Hit-Time benötigt wird)

HR Hit Rate MR Miss Rate HR + MR = 1 MT = HT + MP

Page 13: Rechnerarchitektur Rechenbeispiele

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:

Page 14: Rechnerarchitektur Rechenbeispiele

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

Page 15: Rechnerarchitektur Rechenbeispiele

Referenz Cache 1 Miss 4 Miss 8 Miss 5 Miss 20 Miss 17 Miss 19 Miss 56 Miss 9 Miss 11 Miss 4 Hit 43 Miss 5 Hit 6 Miss 9 Hit 17 Hit Cache Inhalt: Set# Block Index 0 Block Index 1 0 56 8 1 17 9 2 3 43 11 4 4 20 5 5 6 6 7

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.

Page 16: Rechnerarchitektur Rechenbeispiele

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?

c) 300000/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).

Page 17: Rechnerarchitektur Rechenbeispiele

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?

Page 18: Rechnerarchitektur Rechenbeispiele

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.


Recommended