Forum: Mikrocontroller und Digitale Elektronik Zugriff auf Hauptspeicher


von Owen S. (senmeis)


Lesenswert?

Hi,

auf einem Informatik-Lehrbuch steht:

Der Hauptspeicher kann nur einen Zugriff zu einer Zeit bewerkstelligen.

Gilt diese Aussage für Mikrocontroller heute noch?

von (prx) A. K. (prx)


Lesenswert?

Owen S. schrieb:
> Der Hauptspeicher kann nur einen Zugriff zu einer Zeit bewerkstelligen.

Stark veraltet. Bei vielen Mikrocontrollern und recht recht bei 
leistungsfähigen Systeme sind mehrere Zugriffe gleichzeitig möglich. 
Obendrein aus mehreren verschiedenen Gründen.

: Bearbeitet durch User
von Daniel F. (foxi_the_daywalker)


Lesenswert?

Hi,

ich bin auch schon etwas veraltet, aber würde sagen, dass das immer noch 
gilt.
Ausgenommen von Dual-Ported- oder Four-Ported-Ram ist mir kein 
RAM-Speicher bekannt, der mehr als eine Anfrage zur gleichen Zeit 
beantworten kann.

Es gibt Logik und Speicher drum herum, die Anfragen zwischenspeichern 
oder direkt einen Burst zurückliefern, aber gleichzeitig ist das nicht.

Grüße
Daniel

von Michael B. (laberkopp)


Lesenswert?

Owen S. schrieb:
> auf einem Informatik-Lehrbuch steht:
> Der Hauptspeicher kann nur einen Zugriff zu einer Zeit bewerkstelligen.
> Gilt diese Aussage für Mikrocontroller heute noch?

Ja.

Multiport-Hauptspeicher gibt es handelsublicherweise nicht, höchstens 
mal in proprietären Architekturen in FPGA.

Es gibt aber Trennung in Programm- und Datenspeicher, auf die dann auch 
simultan zugegriffen werden kann wenn jedes einen eigenen Bus besitzt, 
Harvard-Architektur.

Und es gibt Cache, die ein Spiegelbild des Hauptspeichers enthalten, und 
auf deren Inhalt man ohne Hauptspeicherzugriff zugreifen kann, so dass 
der eigentliche timeslot fes Hauptspeicherzugriffs schon fur den 
nächsten Wert genutzt werden kann. Das lohnt bei Maschinen mit 
Hauptspeicherzugriff-Bottleneck, also jenseits des Mikrocontrollers.

Das ist aber nicht viel anders als Register, auf deren Inhalt man ja 
auch ohne Hauptspeicherzugriff zugreifen kann, und die in jeder 
Architektur üblich sind, selbst bei stack-Maschinen.


Heute ist es eher schlimmer: ein Hauptspeicherzugriff transportiert mehr 
als 1 Wort, eine ganze Cacheline, weil sequentieller Zugriff schneller 
ist und statistisch oft genug die folgenden Worte benötigt werden, noch 
besser wenn auch so geschrieben wird, so dass man vor dem Schreiben 
eines Wortes die hanze Cacheline holen muss, in ihr das Wort ersetzt, 
und dann die ganze Cacheline wieder zurück schreibt.

von Harald K. (kirnbichler)


Lesenswert?

"Der Hauptspeicher" ist nun nicht ein Speicherbaustein, sondern die 
Gesamtheit aller Speicherbausteine.

Und da es schon seit langem Systeme mit mehreren parallelen 
Speicherkanälen gibt, die gerade eben dafür da sind, parallele Zugriffe 
auf (jeweils separate) Teile des "Hauptspeichers" auszuführen, dürfte 
die Aussage in ihrer Absolutheit nicht mehr zutreffen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Owen S. schrieb:
> Gilt diese Aussage für Mikrocontroller heute noch?
Kommt drauf an, wie viele Busse und wie viele unterschiedliche 
Hauptspeicher mit vievielen Ports sie haben.

Für den durchschnittlichen Allerwelts-µC mit 1 Speicherbus ohne 
Multiport-Speicher gilt: ja. Es ist nur 1 Zugriff gleichzeitig möglich.

Harald K. schrieb:
> dürfte die Aussage in ihrer Absolutheit nicht mehr zutreffen.
Aber noch viel weniger die gegenteilige Aussage "der Hauptspeicher kann 
mehrere Zugriffe zum gleichen Zeitpunkt bedienen" in der Allgemeinheit.

von Vanye R. (vanye_rijan)


Lesenswert?

> Multiport-Hauptspeicher gibt es handelsublicherweise nicht, höchstens
> mal in proprietären Architekturen in FPGA.

Renesas hat Controller mit Dualportram. Aber ja, das ist selten.

Vanye

von (prx) A. K. (prx)


Lesenswert?

Modellhaft aus dem Gedächtnis, wie es bei dem STM32 ungefähr aussieht: 
Der ARM Core hat mindestens einem Memory-Port für Befehle und einen für 
Daten, die gleichzeitig arbeiten können. Dahinter sitzt eine Bus-Matrix 
mit den Memory-Ports des Cores an einer Seite und diversen verschiedenen 
Speicherblöcken (und I/Os) an der anderen. In einer solchen Konstruktion 
sind mehrere Speicher-Zugriffe möglich, sofern sie auf verschiedene 
Speicherblöcke gehen.

von (prx) A. K. (prx)


Lesenswert?

Daniel F. schrieb:
> Ausgenommen von Dual-Ported- oder Four-Ported-Ram ist mir kein
> RAM-Speicher bekannt, der mehr als eine Anfrage zur gleichen Zeit
> beantworten kann.

Oben steht "Hauptspeicher", nicht "RAM". Und schon etliche einfachste 
Mikrocontroller trennen die Zugriffspfade zu Flash und RAM.

von (prx) A. K. (prx)


Lesenswert?

Vanye R. schrieb:
> Renesas hat Controller mit Dualportram. Aber ja, das ist selten.

Mehrere Speicherblöcke sind ziemlich verbreitet. Auch wenn jeder davon 
single ported ist, sind parallele Zugriffe auf verschiedene 
Speicherblöcke möglich. Mit dual port RAM hat diese Konstruktion 
nichts zu tun.

von (prx) A. K. (prx)


Lesenswert?

Daniel F. schrieb:
> Ausgenommen von Dual-Ported- oder Four-Ported-Ram ist mir kein
> RAM-Speicher bekannt, der mehr als eine Anfrage zur gleichen Zeit
> beantworten kann.

Als Beispiel für parallele Zugriffe ohne echtes multiport RAM können 
Caches dienen.

Caches sind ein Teil der Speicherhierarchie und erfolgreiche Zugriffe 
darauf darf man als Zugriffe auf den Hauptspeicher betrachten. Sie 
erlauben oft mehrere parallele Zugriffe, zumindest jenseits sehr 
einfacher Mikrocontroller. Nicht aber, indem die RAM-Zelle selbst 
multiported wäre, sondern indem der Cache in mehrere Banks aufgeteilt 
ist, und Zugriffe in verschiedene Banks parallel möglich sind.

Beispiel: 16 Bytes pro Zeile mit 4 Banks und 4 Bytes pro Bank, also 
(0,1,2,3),(4,5,6,7),... Zugriffe auf (0,1,2,3) sind dann parallel zu 
(4,5,6,7) möglich. Nicht aber Zugriffe auf (0,1) und (2,3).

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Michael B. schrieb:
> Das ist aber nicht viel anders als Register, auf deren Inhalt man ja
> auch ohne Hauptspeicherzugriff zugreifen kann, und die in jeder
> Architektur üblich sind, selbst bei stack-Maschinen.

Wobei Register tatsächlich mit Multiport-RAM-Zellen implementiert sind, 
schon beim AVR, während Caches banked sind.

von (prx) A. K. (prx)


Lesenswert?

Michael B. schrieb:
> Heute ist es eher schlimmer: ein Hauptspeicherzugriff transportiert mehr
> als 1 Wort, eine ganze Cacheline, weil sequentieller Zugriff schneller
> ist und statistisch oft genug die folgenden Worte benötigt werden

Weshalb jenseits der Cache-Lines noch automatisches und komplexes 
Prefetching weiterer Blöcke erfolgen kann, das keineswegs nur 
sequentielle Zugriffe erkennt. Eine Wissenschaft für sich.

: Bearbeitet durch User
von (prx) A. K. (prx)


Angehängte Dateien:

Lesenswert?

(prx) A. K. schrieb:
> Modellhaft aus dem Gedächtnis, wie es bei dem STM32 ungefähr aussieht

STM32 mit Cortex M4F Core.

: Bearbeitet durch User
von Foobar (asdfasd)


Lesenswert?

> Der Hauptspeicher kann nur einen Zugriff zu einer Zeit bewerkstelligen.

Formulieren wir das etwas um:
  Ein Bus kann nur einen Zugriff zu einer Zeit bewerkstelligen.

Damit ergibt sich: wenn der gesamte Hauptspeicher an einem einzelnen Bus 
hängt, kann auch nur ein gleichzeitiger Zugriff stattfinden.

> Gilt diese Aussage für Mikrocontroller heute noch?

In den moderenen µC gibt es zig Busse die über eine Bus-Matrix verrnetzt 
sind.  Ziel dabei ist, soviele Zugriffe wie möglich gleichzeitig 
abzuwickeln.  Üblich ist es z.B., den Speicher über mehrere Busse an die 
Matrix anzubinden (RAM und Flash getrennt, oder gar mehrere RAM-Bänke 
über separate Busse).  Ebenso bei der CPU: getrennte Busse für 
Instruktionen und Daten (evtl noch Stack und/oder IO).  Bei Multicore 
evtl pro CPU.  Der DMA-Kontroller hängt auch noch mit mehreren Bussen 
dran.  So können, bei geschickter Aufteilung, alle Komponenten 
gleichzeitig auf die Resourcen zugreifen.  Beim RP2040 (Raspberry Pi 
Pico) z.B. gibt es sechs RAM-Bänke mit eigenen Bussen (Idee: pro Core 
eine Bank für Code, eine für Daten, eine für Stack).  So können, bei 
geschickter Adressaufteilung, 6 Zugriffe gleichzeitig auf das RAM 
stattfinden.  (Btw, Bandbreite der Matrix beträgt 2 GB/s.)

Nachtrag (gerade nachgelesen): die Matrix beim RP2040 ist auf max 4 
parallele Transfers begrenzt (nicht 6).

: Bearbeitet durch User
von Daniel F. (foxi_the_daywalker)


Lesenswert?

(prx) A. K. schrieb:
> Daniel F. schrieb:
>> Ausgenommen von Dual-Ported- oder Four-Ported-Ram ist mir kein
>> RAM-Speicher bekannt, der mehr als eine Anfrage zur gleichen Zeit
>> beantworten kann.
>
> Oben steht "Hauptspeicher", nicht "RAM". Und schon etliche einfachste
> Mikrocontroller trennen die Zugriffspfade zu Flash und RAM.

Bei mir im Umfeld nennt keiner den Flash Hauptspeicher :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.