Achtung: Dies ist eine historische Web-Site. Aktuell ist https://rainer.gerhards.net/ (engl) bzw https://www.rainer-gerhards.de/ (deutsch). Alle dynamischen Funktionen, Formulare etc auf dieser Seite sind abgeschaltet.
Datenschutzerklärung Impressum

 
Aug 01, 2017 - 06:46 PM


Select language
Preferred language:


Online
There are 1 unlogged user and 0 registered users online.

You can log-in or register for a user account here.

Anmeldung




 


 Log in Problems?
 New User? Sign Up!



Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Author Message
rgerhardsOffline
Post subject: Ausgerichtete (aligned) Zugriffe  PostPosted: Dec 02, 2009 - 01:46 PM



Joined: Sep 25, 2006
Posts: 688

Status: Offline
Von mir vielleicht etwas Weiteres zur Sinnhaftigkeit ausgerichteter Speicherzugriffe.

Man betrachte Fernuni-Kurs 1608 Abbildung 4.22 (oder ein anderes Bild eine Speichermatrix, z.B. [1]) an: das ist ein bitorientierter Speicher, im Text auf Seite 200 sieht man aber, das die Organisation auch für größere Wortbreiten gleich ist (bzw. sein kann). Man beachte den matrixförmigen Aufbau. Bei heute real existierendem Hauptspeicher ist es so, dass nicht ein einzelnes Element ausgelesen wird, sondern vielmehr eine ganze Zeile. Diese Zeile wird in ein Zwischenregister "geschoben" und dort wird dann die entsprechende Spalte ausgelesen, womit der Zugriff dann endgültig abgeschlossen wird.

Hier kommt dann die Modulo-Operation ins Spiel. Nehmen wir einen Byte-adressierbaren Speicher mit einer Zeilengröße n von 4 Byte an (in der Praxis sind heute, meine ich, 64 Byte üblich). Betrachten wir nun eine beliebige Adresse A. Dann kann man diese Adresse in eine Zeilen-Adresse A_Z und eine Spaltenadresse A_S zerlegen. Dabei gilt

A_S = A mod n
A_Z = A div n (div sei das ganzzahlige Divisionsergebnis)

Ein Zugriff wäre dann auf den Zeilenanfang ausgerichtet, wenn A_Z gleich Null ist. Konkretes Beispiel:

A = 1024, n = 4
A_S = 1024 mod 4 = 0
A_Z = 1024 div 4 = 256

Nehmen wir an, dass zwei Byte an dieser Adresse gelesen werden müssen. Dann ist ein Zugriff auf die Speichermatrix notwendig, denn A_S lädt die (Inhalten der Speicherstellen an) Adressen 1024, 1025, 1026, 1027 in das Zwischenregister, darauf kann dann mit A_S zugegriffen werden. Es ist also nur ein Zugriff auf die Speichermatrix selbst erforderlich, um das 16-Bit Datum auszulesen.

Nehmen wir nun an, die Adresse ist 1023

A=1023, n=4
A_S = 1023 mod 4 = 3
A_Z = 1023 div 4 = 255

Da A_S <> 0, ist der Zugriff nicht auf den Beginn der Zeile ausgerichtet. Die gelesene Zeile umfasst damit die Adressen 1020, 1021, 1022, 1023. Von unserem 16-Bit Wert erhalten wir also zunächst einmal nur den Wert an Adresse 1023, anschließend ist ein weiterer Zugriff auf die Speichermatrix mit A_Z = 256 (wie oben!) erforderlich.

Im Ergebnis dauert der Zugriff also länger. Man kann das in einem rechenintensiven Programm durchaus auch in der Praxis bemerken. Solche "nicht ausgerichteten" Speicherzugriffe können die Laufzeit deutlich erhöhen. Ausserdem bringen sie noch eine Reihe weiterer Probleme mit sich, z.B. bei der Synchronisation von nebenläufigen Prozessen.

Zum Speicherzugriff könntest Du evtl. auch einmal in meine Präsentation zum Cache schauen, ab Folie drei die nächsten paar Folien:

http://www.gerhards.net/module-Pagesett ... -204.phtml

Für die Experten: ich habe hier versucht vertretbar zu vereinfachen und dennoch ein konkretes Anwendungsbeispiel zu erhalten. Ich bin der Meinung, dass die Aussagen korrekt sind. Allerdings wird man im Detail Korrekturen vornehmen müssen, wenn man an reale CPUs denkt...

Ich hoffe, das Beispiel ist nützlich.
Rainer

[1] http://www.weblearn.hs-bremen.de/risse/ ... memory.pdf
 
 View user's profile Send private message  
Reply with quote Back to top
Display posts from previous:     
Jump to:  
All times are GMT + 1 Hour
Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Powered by PNphpBB2 © 2003-2007 The PNphpBB Group
Credits
:: RSS Feed: ::
Page created in 0.141544103622 seconds.

Ferientips - das Urlaubsweb - Jan Gerhards - Ulrike Gerhards - Ulrike Gerhards Foto Site