Hi, auf einem Informatik-Lehrbuch steht: Der Hauptspeicher kann nur einen Zugriff zu einer Zeit bewerkstelligen. Gilt diese Aussage für Mikrocontroller heute noch?
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
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
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.
"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.
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.
> 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
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.
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.
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.
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
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.
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
(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
> 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
(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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.