Im Allgemeinen nicht.
Einige Systeme stellen sicher, dass jeweils nur ein Master vorhanden ist. Ein bisschen älteres Design, wenn das der Fall ist (selbst alte Designs hatten oft parallele Lösungen). Ein moderner Bustyp, bei dem jeder Bus (Adresse, Schreibdaten, Lesedaten) unabhängig arbeitet und ein Tag oder eine ID pro Taktzyklus aufweist, um anzuzeigen, welcher Transaktion ein Taktzyklus zugeordnet ist. Sie können also viele / viele Transaktionen gleichzeitig in beide Richtungen ausführen, wobei verschiedene Transaktionen auf den Lese- oder Schreibdatenbussen gemischt werden. Wer als nächstes loslegen kann, ist prioritätsbasiert. Es gibt keine Regel, dass die Transaktionen auf dem Bus in der Reihenfolge ausgeführt werden müssen, in der die Softwareanweisungen angeordnet sind. und natürlich werden die Antworten auch in unterschiedlicher Reihenfolge zurückkommen, je nachdem, wie nah und schnell das Ziel ist. Ebenso sind Abrufe nicht in Ordnung, die Verzweigungsvorhersage löst zufällig aussehende Abrufe aus, wann immer es sich anfühlt.
Eine große DMA-Transaktion würde sicher viel mehr Busbandbreite erfordern, aber zu sagen, dass der Prozessor blockiert, was nicht unbedingt der Fall ist, hängt auch von der Architektur und dem Code ab. Der Code kann eine Anweisung enthalten, die "stall" sagt, bis das Signal / Ereignis für das Ende der Übertragung auftritt, und dann sicherstellt, dass der Prozessor beendet, was er in der Pipe tun kann, und dann blockiert. Aber das oder einige Architekturen erfordern möglicherweise nicht, dass Sie blockieren, und es ist auch nicht wirklich klug, so viel verschwendete Bandbreite zu blockieren. Was wäre der Sinn von DMA überhaupt, wenn es nicht parallel betrieben wird? Codieren Sie einfach die Übertragung in einer Schleife, holen Sie einige Zyklen hinzu, je nach Architektur sind sie möglicherweise nicht so kostspielig wie der Aufwand für die DMA-Logik, die Leistung usw. Verstehen Sie, wie die dma arbeitet für die jeweilige Architektur und das System, auf dem Sie sich befinden, und entscheidet, ob es sich überhaupt lohnt, es zu verwenden.
Es gibt keine generische Antwort auf die Funktionsweise von dma. Es hängt stark vom Systemdesign und allen Komponenten im System ab.