damo86 Geschrieben 29. Januar 2013 Geschrieben 29. Januar 2013 Hallo zusammen, Hab am Freitag Prüfung und folgende Frage in ähnlicher Ausführung hab ich schon öfters gelesen, aber ich komm nicht dahinter bzw. hab keine Formel. Hoffentlich kann mir jemand weiterhelfen... Hier die Aufgaben: Das schon etwas ältere PC-System AT 286 arbeitete mit 24 Bit Adressbreite und 16 Bit Datenbreite (Wortlänge), seine Taktfrequenz betrug 50 MHz, ein einzelner Hauptspeicherzugriff benötigte 100 ns. Wir nehmen vereinfachend an, dass jeder Maschinenbefehl des AT-286 grundsätzlich 2 Byte lang ist und genau einen Takt zur Ausführung benötigt. Das System besitze zunächst keinen Cache. a) Welche Ausführungszeit ergibt sich für eine Berechnung, die 50000 Maschineninstruktionen benötigt? Berücksichtigen Sie dabei die Zeit für das Holen und Ausführen der Befehle. Bei jedem zweiten Befehl wird noch ein 16-Bit Datenwort vom oder zum Hauptspeicher transferiert. Welche Gesamtausführungszeit ergibt sich damit? Zitieren
Klotzkopp Geschrieben 29. Januar 2013 Geschrieben 29. Januar 2013 Fang damit an, dass du bestimmst, wie lange es dauert, einen einzelnen Befehl zu holen und auszuführen. Zitieren
damo86 Geschrieben 29. Januar 2013 Autor Geschrieben 29. Januar 2013 genau um das geht es... wie berechne ich das ganze??? Zitieren
Klotzkopp Geschrieben 29. Januar 2013 Geschrieben 29. Januar 2013 Um auszurechnen, wie lange das Holen eines Befehls dauert, musst du wissen, wieviele Hauptspeicherzugriffe du dafür brauchst. Wie lange ein Hauptspeicherzugriff dauert, steht im Aufgabentext. Das Ausführen dauert einen Takt, das steht im Aufgabentext. Die Dauer eines Takts ist der Kehrwert der Taktfrequenz. Zitieren
damo86 Geschrieben 31. Januar 2013 Autor Geschrieben 31. Januar 2013 Kann die Antwort so lauten: a) Zeit = 1/50 MHz = 20 ns 20 ns x 50000 Befehle x 100 ns = 100000000 ns = 0,1 Sec 16 Bit = 2 Byte entspricht 1 Takt für ein Datenwort, das widerum entspricht wieder 20 ns 20 ns * 25000 Datenwörter x 100 ns = 50000000 ns = 0,05 Sec Gesamt = 0,15 Sec Bitte erneut um Hilfe Klotzkopp... ich hoffe ich habs jetzt endlich. Bitte sag ja Zitieren
Klotzkopp Geschrieben 31. Januar 2013 Geschrieben 31. Januar 2013 20 ns x 50000 Befehle x 100 nsDas kann doch schon von den Einheiten her nicht passen. Du multiplizierst zwei Zeiten, und am Ende kommt wieder eine Zeit heraus? Geht nicht. Versuch nicht, die Angaben irgendwie mitander zu verknüpfen. Geh systematisch vor. 50000 Instruktionen dauern 50000 mal so lange wie 1 Instruktion. Instruktion besteht aus Instruktion holen und Instruktion ausführen -> GESAMT = 50000 * (HOLEN + AUSFÜHREN) Holen dauert 100 ns für 16 Bit (Datenbusbreite). Eine Instruktion ist 2 Byte groß, also braucht man 1 Hauptspeicherzugriff pro Instruktion. -> HOLEN = 100 ns Ausführen dauert 1 Takt -> AUSFÜHREN = 1/50 MHz = 20 ns -> GESAMT = 50000 * (100 ns + 20 ns) = 6.000.000 ns = 6 ms Zu Speicherzugriffe benötigen 100 ns, nicht 1 Takt. Zitieren
damo86 Geschrieben 31. Januar 2013 Autor Geschrieben 31. Januar 2013 Haha :-) vielen Dank! Eigentlich ganz logisch... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.