Theoretische und technische Informatik - ganz praktisch
Herzlich willkommen auf der Question/Answer-Plattform zu Grundlagen der Informatik II. Wir wünschen Ihnen viel Spaß beim Lernen und Diskutieren!
Loggen Sie sich mit Ihrem KIT-Account (u...) ein, um loszulegen!
Beachten Sie auch diese Informationen zum Schnelleinstieg.
(Nicht-KIT-Studierende beachten bitte diese Informationen.)

Schöne Ferien!
 

 

Analogie Assembler Adressierung

+1 Punkt
243 Aufrufe
Guten Tag,

ich wollte fragen, wie die Werte in der Tabelle zustande kommen, mir ist leider noch nicht ganz klar, welche Analogie zwischen Adressen und Assemblern besteht, bzw. wie ich die verschiedenen Adressierungen bzgl. Assemblern behandeln kann.

Danke schonmal.

LG
Gefragt 5, Feb 2017 in 2016-H-09 von uwelk uwelk Lernwillige(r) (210 Punkte)  

Eine Antwort

0 Punkte
Hallo,

ich weiß nicht genau, was du mit Analogie zwischen Assemblern und Adressen meinst, das sind zwei grundverschiedene Dinge.

Adressen sind Positionen von Speicherzellen (Registern) und Assemblersprache ist eine Programmiersprache.

Zu Beginn ist der Wert 40 an Postition 1001 gespeichert.

In der ersten Zeile speichert das Programm dann den Wert von Register 1001 in Register 1002 (direkte Adressierung).

In der Zweiten speichert es den Wert 1002 in Register 1001 (unmittelbare Adressierung).

In der Dritten wird der Wert 40 in 1003 gespeichert, da 1001 den Wert 1002 enthält und dieser wiederum den Wert 40 (indirekte Adressierung).
usw.

Viele Grüße

Lukas (Tutor)
Beantwortet 5, Feb 2017 von uxdui Tutor(in) (103,050 Punkte)  
Bearbeitet 5, Feb 2017 von uxdui
Vielen dank für deine Antwort, tut mir leid ich hatte es etwas schwammig formuliert, ich meinte eher wie ich mir die Beziehung zwischen CPU, Cache und Hauptspeicher vorstellen kann, mir ist leider nicht ganz klar, was der Cache genau macht, ein Beispiel hierfür wäre Aufgabe 8.) aus der Nachklausur 2016, was bedeutet es konkret, dass ich nur zwei Zeilen verwende und was macht der Cache in dieser Aufgabe ?
Tut mir leid, ich meinte Nachklausur 2016.
Der Cache fungiert als Pufferspeicher zwischen CPU und Arbeitsspeicher und dient dazu die Zugriffszeit von CPU auf bestimmte Daten zu verkürzen. Der Cache speichert oft oder zuletzt referenzierte Daten ab, sodass die CPU, insofern sie diese Daten nochmal benötigt, diese nicht mehr aus dem Arbeitsspeicher abrufen muss sondern nur noch aus dem Cache, welcher eben einen schnelleren Zugriff ermöglicht.
Cache Hit und Cache Miss bedeutet in diesem Zusammenhang, dass angefragte Daten der CPU bereits im Cache befindlich sind oder eben nicht.
Wenn der Cache zwei Zeilen hat, kann er eben nur zwei Daten speichern.

Nun einmal konkret zur Aufgabe:

Zum Beispiel wird in der 5. Zeile Adresse 24 (aus dem Arbeitsspeicher) zum ersten Mal abgerufen (Cache-Miss) und wird jetzt im Cache gespeichert. In der 6. Zeile wird sie nun erneut abgerufen. Zu diesem Zeitpunkt wurde sie jetzt bereits vorher schon abgerufen und gespeichert, befindet sich also im Cache (Cache-Hit) und muss nicht nochmal vom Arbeitsspeicher eingeholt werden.
Muss mich jetzt auch mal einmischen:

"Der Cache speichert oft oder zuletzt referenzierte Daten ab"

Ich habe das so verstanden, dass er immer und nur das zuletzt referenzierte Datum abspeichert.
Das mit dem "oft" bezieht sich doch bloß darauf, dass diese Daten in bestimmten Verfahren länger im Cache gespeichert werden, bzw. nie gelöscht werden.
Aber das oft referenzierte Daten abgespeichert werden meine ich nicht gelesen zu haben. (also klar, passiert automatisch, da oft referenzierte Daten auch irgendwann mal referenziert werden. Klingt aber bloß so, als würde der Computer sich anschauen welche Daten am öftesten referenziert werden und diese dann im Cache einspeichern.)

Liege ich bei meiner Annahme falsch?
Ja, da hast du schon recht. Was ich damit meinte, ist dass auch "vermutlich bald benötigte Daten" dort abgespeichert werden können. Da das aber bei uns nichts zu suchen hat, hätte ich das auch weglassen können, da hast du recht; führt wahrscheinlich nur zu Verwirrungen.
Rein aus Interesse:

Meinst du via spekulativer Programmausführung?
Speichert der dann bloß den Datenblock ins Cache oder speichert der den Datenblock ins Cache, weil er mit dem Datenblock spekulativ weiterarbeitet?
Puh, ich glaube da kennst du dich wohl besser aus als ich. Hatte das mal gelesen aber mich nicht wirklich weiter damit beschäftigt.
...