www.mikrocontroller.net

Forum: PC-Programmierung Breite Prozessordatenbus 32 Bit ausnutzen?


Autor: Karl Meutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wäre es technisch möglich, über einen 32-Bit breiten CPU-Datenbus
16-Bit zu übertragen?
Die Bus Interface Unit füllt bei freien 4 Byte (32-Bit breiter
CPU-Datenbus) die nächsten 4 Byte vom Speicher in die Prefetch-Queue
ein.
Nutzt sie die 4-Byte Blöcke nur wegen der Performance oder wäre es auch
möglich, dass sie 16-Bit über einen 32-Bit breiten Bus überträgt (wie
auch immer)?

Gruß

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Karl

ich weiss nicht von welchem Prozessor du sprichst. Das ist durchaus
relevant. Wenn Du von einem Intel-Prozessor redest, dann ist das
möglich. Die 32-Bit Intel-Prozessoren können 8, 16 oder 32 Bit
transportieren.

Gerhard

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moderne Intel Prozessoren haben aber einen 64 bit bus.

Ich frage mich auch, wie das zB bei den ARMs geht?

Autor: Karl Meutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Gerhard: Danke Dir, genau das wollte ich wissen! Dann wäre es technisch
für die BUI ja möglich, 1 Byte in die Prefetch-Queue zu stecken, falls 1
Byte frei werden sollte.

Weißt du, wie x86 reagieren, wenn in der Prefetch-Queue 1 Byte frei ist
und die beiden nächsten Befehle im Speicher jeweils 1 Byte und 3 Byte
breit sind?
Lädt die BUI direkt 1 Byte nach oder wartet, bis sie die Daten bündeln
kann (das müssten sie ja dann vorhersehen), wobei hier aber bestimmt
die Pipeline nicht optimal ausgelastet wäre, auf der anderen Seite aber
doch auch nicht, wenn volle 4 Byte zu laden länger dauert, als der
gerade ausgeführte Befehl Taktzyklen verbraucht!?

Grüße

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche x86? Das ist nicht Bestandteil der Instruction Set Architecture
und folglich in jeder Implementierung anders.

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Karl

das sind schon sehr detaillierte Fragen, die ich nicht beantworten
kann. Das weiss vielleicht ein INTEL-Freak. Grundsätzlich versucht ein
32-Bit -Prozessor immer 32 Bit gleichzeitig zu lesen. Dass die
Intel-Dinger auch 16 Bit und 8 Bit lesen und schreiben können, ist
meine ich - wegen der Abwärts-kompatibilität. Wenn man versucht
byteweise auf Adressen zuzugreifen, die nicht Doppelwort-aligned sind,
gibts Verzögerungen. 16-Bot oder 32-Bit - RISC-Prozessoren können
meines Wissens sowas nicht.
Wie aber Prozessoren ihre Prefetch laden - weiss ich nicht. Gerade bei
so komplzierten Dingern wie den Intel-Prozessoren, die wahlweise aus
dem primären Cach, sekundären cache oder aus dem Hauptspeicher laden
könenn... oh Gott.



Gerhard

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie schon gesagt das ist von Prozessor zu Prozessor verschieden.
Du kannst ja bei Intel in die Datenblätter/Programmierbeschreibung des
Pentiumprozessors reinschauen.
Warum interessiert dich die Prefetchqueue des x86 ,des letzte Mal das
ich davon was gehört habe war im Zusammenhang mit der Unterscheidung
zwischen 8086 und 8088 beim einen war die Prefetchqueue 4 und beim
anderen 6byte lang wenn ich nicht irre. Dann gab es da noch die
möglichkeit per selbstmodifizierendem Code Debugger zum stoppen zu
bringen. (Modifikation von Code der schon in der Prefetchqueue war)
Aber spätestens ab Pentium ist das eigentlich nicht mehr interessant
(parallele Abarbeitung, Caches etc.) ansonsten findet man noch die
Angabe das ein P4 bis zu 3 Befehlen fetchen kann aber nur 2
verarbeiten...
Probiere es doch einfach mit selbstmodifizierendem Code aus, wie ein
x86 reagiert.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.