PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Die Komplexität der UDMA


TigerAge
2005-07-18, 23:53:54
Hallo,

da es hier anscheinend niemanden gibt, der so recht weiß, wie es sich mit den Datenübertragungen der ATA-Schnittstelle verhält, rufe ich dazu auf, die Informationsschnipsel zu einem Ganzen zusammen zu tragen.

Es gibt in diesem Forum genügend, die ständig die Hucke voll kriegen, weil sie immer noch der Meinung sind, dass schnelle Platte von langsamen am gleichen Strang ausgebremst werden (mich eingeschlossen).

Ihr habt jetzt mal die Möglichkeit mit einem "Mythos" aufzuräumen. Also los, Ihr Weißen der Datenübertragungsprotokolle und Stecksysteme! Füllt unsere Hirne mit Wissen!

Grüße

GloomY
2005-07-19, 10:51:42
Du meinst mit "Strang" sicher das ParallelATA Kabel. Das ist logisch betrachtet ein Bus, an dem bis zu drei Teilnehmer sitzen (2 Geräte und der Controller). Wenn der Bus belegt ist, kann ihn niemand anders nutzen. Das ist die Einschränkung, die sich aus der Topologie ergibt.

Wenn man nun zwei Platten am gleichen Kabel betreibt, können die sich durchaus in die Quere kommen, besonders wenn einer der beiden den Bus für längere Zeit blockiert. Das Problem ist glücklicherweise mit SerialATA aus der Welt geschaffen, weil es hier nur noch eine Punkt-zu-Punkt Verbindung (d.h. ein Laufwerk) pro Kabel gibt.

Bei SCSI sieht es im Übrigen sehr ähnlich wie bei PATA aus. Auch hier ist es eine Bus-Topologie mit bis zu 16 Teilnehmern (UW-SCSI), aber mit dem Unterschied, dass es hier explizit vorgesehen ist, dass sich Teilnehmer vom Bus abmelden, wenn sie gerade zu tun haben. Das ermöglicht anderen Teilnehmern dann in der Zwischenzeit den Bus zu benutzen und minimiert die schädlichen gegenseitlichen Einflüsse. Solange genug Bandbreite vorhanden ist (wie bei U320 SCSI), ist alles im Lot =)
PATA/IDE ist dagegen nicht dafür ausgelegt, weil es als Punkt-zu-Punkt Verbindung entwickelt wurde und erst später auf zwei Laufwerke pro Kabel erweitert wurde. Daher kommt eben die mögliche Einwirkung von einem anderen Gerät, welches am gleichen Kabel hängt.

edit: Das obige ist falsch. Schon ATA-1 hat zwei Geräte pro Kanal unterstützt. Später kamen mit EIDE nur ein zweiter Kanal hinzu.

anorakker
2005-07-19, 12:39:31
bevor hier "entmystifiziert" wird, sollte man vorher vielleicht man genau definieren, was mit "langsamen platten" oder "ausbremsen" gemeint ist ? langsame platten - bedeutet das langsame übertragungsraten, zugriffe oder udma modi ?
und wann bremst eine platte die andere aus ? bei gleichzeitigem zugriff oder allein wegen der tatsache, dass sie mit am bus hängt ?
afaik ist die platte (der mechanische teil) immer noch das langsamste glied in der ganzen kette, irgendwelche burst-transferraten ausm cache oder höchst praxisfremde streaming-benchmarks bedeuten doch praktisch gesehen überhaupt nix.

TigerAge
2005-07-19, 15:53:15
Ich habe davon gesprochen, dass eine schnelle Platte (Extremfall UDMA133) mit einer langsamen Platte (Vorzugsweise UDMA33) am selben Controller hängt. Wie beeinflussen sich diese Laufwerke gegenseitig?

@GloomY: Dass ATA eine Bus-Topologie hat, war mir bereits klar. In den Grundzügen der Technik bin ich bewandert. Eine Frage hätte ich jedoch noch: Seriell ist doch gleich bedeutend mit Punkt-zu-Punkt. Dann frage ich mich, wie es sich SeriellSCSI mit den Port-Dopplern verhält.

Grüße

Sephiroth
2005-07-19, 18:18:24
Es gibt in diesem Forum genügend, die ständig die Hucke voll kriegen, weil sie immer noch der Meinung sind, dass schnelle Platte von langsamen am gleichen Strang ausgebremst werden (mich eingeschlossen).

Gerade das ist doch bei UDMA/DMA gar nicht mehr der Fall, mal abgesehen vom trivialen Fall, bei dem auf beide Geräte ein gleichzeitiger Zugriff herrscht.

Das Gerät hat über den DMA (Direct Memory Access) Controller direkten Zugriff auf den RAM und muß nicht mehr auf freie CPU Ziet warten. Und da ist das Problem beim PIO Modus, daß eben ein langsames Geräte die CPU lange beansprucht und so das System ausbremst. Außerdem wird bei DMA das System/CPU entlastet.

p.s.
hab den Thread mal ins Tech Forum verschoben

GloomY
2005-07-19, 20:02:14
Ich habe davon gesprochen, dass eine schnelle Platte (Extremfall UDMA133) mit einer langsamen Platte (Vorzugsweise UDMA33) am selben Controller hängt. Wie beeinflussen sich diese Laufwerke gegenseitig?Ich vermute mal, dass jedes Gerät die Geschwindigkeit wählt, mit der es übertragen will und kann. Also wird der Bus mit mehreren Geschwindigkeiten betrieben, je nachdem wer den Bus gerade "hält".
Ansonsten hätte man sowas ja schon längst als Geschwindigkeitseinbuße festgestellt und wäre bekannt.

Ich kann leider nur Vermutungen anstellen, weil die offiziellen ANSI Spezifikationen Geld kosten ;(

ANSI INCITS 397-2005 (Vol. 1) (http://webstore.ansi.org/ansidocstore/product.asp?sku=ANSI+INCITS+397%2D2005+%28Vol%2E+1%29) (ATA Command Set)
ANSI INCITS 397-2005 (Vol. 2) (http://webstore.ansi.org/ansidocstore/product.asp?sku=ANSI+INCITS+397%2D2005+%28Vol%2E+2%29) (PATA)
ANSI INCITS 397-2005 (Vol. 3) (http://webstore.ansi.org/ansidocstore/product.asp?sku=ANSI+INCITS+397%2D2005+%28Vol%2E+3%29) (SATA)
@GloomY: Dass ATA eine Bus-Topologie hat, war mir bereits klar. In den Grundzügen der Technik bin ich bewandert. Eine Frage hätte ich jedoch noch: Seriell ist doch gleich bedeutend mit Punkt-zu-Punkt. Dann frage ich mich, wie es sich SeriellSCSI mit den Port-Dopplern verhält.

GrüßeNein, seriell ist nicht gleichbedeutend mit Punkt-zu-Punkt. Punkt-zu-Punkt heisst einfach nur, dass es zwei Geräte sind: Einer am Anfang und einer am Ende.

Parallel oder Seriell bedeutet, ob es für bestimmte Zwecke (Datenübertragung, Adressen, Commands) eigene Leitungen gibt oder ob diese alle über die gleichen Leitungen drübergehen und man mit gewissen Konventionen dann herausbekommen muss, was jetzt genau was ist (meistens werden Paket-basierte Verfahren verwendet).

BlackArchon
2005-07-19, 20:19:00
Gerade das ist doch bei UDMA/DMA gar nicht mehr der Fall, mal abgesehen vom trivialen Fall, bei dem auf beide Geräte ein gleichzeitiger Zugriff herrscht.

Das Gerät hat über den DMA (Direct Memory Access) Controller direkten Zugriff auf den RAM und muß nicht mehr auf freie CPU Ziet warten. Und da ist das Problem beim PIO Modus, daß eben ein langsames Geräte die CPU lange beansprucht und so das System ausbremst. Außerdem wird bei DMA das System/CPU entlastet.

p.s.
hab den Thread mal ins Tech Forum verschoben
So sollte die Theorie aussehen. Leider habe ich schon bei einigen Boards erlebt, dass zwar angezeigt wird (im BIOS und im Gerätemanager), dass die Primary Master-Platte als UDMA100 und der Primary Slave-Brenner als UDMA33 läuft, die Festplatte aber trotzdem nur auf ~31 MB/s Burstgeschwindigkeit kommt. Ohne Brenner liefert sie ihre ~89 MB/s.

GloomY
2005-07-19, 21:37:15
Mitlerweile habe ich auch andere Quellen für die angegebenen Standards gefunden:

http://www.t13.org/#Project_drafts

speziell die drei angesprochenen:
ATA Commands (http://www.t13.org/docs2004/d1532v1r4b-ATA-ATAPI-7.pdf)
PATA (http://www.t13.org/docs2004/d1532v2r4b-ATA-ATAPI-7.pdf)
SATA (http://www.t13.org/docs2004/d1532v3r4b-ATA-ATAPI-7.pdf)

So weit ich das richtig verstanden habe, sagt der PATA Standard, dass jedes Gerät einen eigenen Übertragungsmodus wählen kann, bei dem gewisse minimale Zeitintervalle nicht unterschritten werden dürfen.
Eine Datenübertragung (Strobe) kann danach jederzeit stattfinden (also asynchron), solange die für den Übertragungsmodus minimale Zeit zwischen zwei Übertragungen nicht unterschritten wird:

E.5.3.4 STROBE minimums and maximums
The Ultra DMA protocol does not define a maximum STROBE time. The sender may strobe as slowly as it chooses independent of the mode that has been set, though it has to meet the specified setup and hold times for the mode that has been set by the host. The sender is also not required to maintain a consistent cycle time throughout the burst. It would not be a violation of protocol for the cycle time to change on every cycle so long as all cycles are longer than or equal to the minimum cycle time for the mode that is set.

An upper timing bound or PLL is not used by the recipient to qualify the STROBE signal. Regardless of the frequency of the STROBE, the recipient has to meet the setup and hold times of the received signal specified for the mode that has been set.

The limit on the maximum STROBE time is determined by the system time-out. This time-out is typically on the order of a few seconds. If a device begins to strobe once every ten seconds during a data-in burst, this would not be in violation of the protocol. However, this could cause a software driver to determine that the device is not responding and perform a recovery mechanism. The recovery will often be a hardware reset to the device.Das bedeutet, dass unterschiedliche Übertragungsmodi von Geräten, die am gleichen Bus hängen, einander nicht beeinflussen sollten.

Ikon
2005-07-20, 18:35:36
Alle modernen IDE-Controller unterstützen ein Feature namens "Independent Device Timing". Die Transfermodi von zwei Geräten an einem Kabel werden dadurch wohl von einander unabhängig bestimmt.

@Threadstarter
Ich bin sicher, du meintest die "Weisen der Datenübertragungsprotokolle und Stecksysteme" und nicht die "Weißen der Datenübertragungsprotokolle und Stecksysteme" :)

PhoenixFG
2005-07-20, 19:19:42
Parallel oder Seriell bedeutet, ob es für bestimmte Zwecke (Datenübertragung, Adressen, Commands) eigene Leitungen gibt oder ob diese alle über die gleichen Leitungen drübergehen und man mit gewissen Konventionen dann herausbekommen muss, was jetzt genau was ist (meistens werden Paket-basierte Verfahren verwendet).

Das kann ich lt. meinem Kenntnisstand nicht so stehen lassen. Ob parallel oder seriell entscheidet allein die Übertragung der Datenbits. Ein gutes Beispiel wäre die RS232-Schnittstelle. Diese überträgt die Datenbits seriell, hat aber trotzdem extra Steuerleitungen (RTS, CTS etc.)

MfG

GloomY
2005-07-21, 01:15:53
Das kann ich lt. meinem Kenntnisstand nicht so stehen lassen. Ob parallel oder seriell entscheidet allein die Übertragung der Datenbits. Ein gutes Beispiel wäre die RS232-Schnittstelle. Diese überträgt die Datenbits seriell, hat aber trotzdem extra Steuerleitungen (RTS, CTS etc.)

MfGHmm, da muss ich dir uneingeschränkt zustimmen. Gerade in diesem Beispiel mit nur einer Datenleitung ist es ja offensichtlich, dass es seriell sein muss.

Die Frage, die sich hieraus ergibt, ist was denn letztendlich ein genaues Unterscheidungsmerkmal sein soll. Wikipedia schreibt (http://en.wikipedia.org/wiki/Serial_communications) z.B. dass

"the process of sending data one bit at one time, sequentially,[...]"

typisch für eine serielle Übertragung sein soll. Wenn man sich dann aber z.B. Hypertransport oder PCI-Xpress oder Rambus DRAM anschaut, hat man bis zu 32 Datenleitungen, auf denen gleichzeitig (parallel) Daten übertragen werden können.

Irgendwie fehlt mir hier der logische Schluss, warum das dann trotzdem seriell sein soll... :conf2:

Coda
2005-07-21, 01:26:35
Ganz einfach: Bei einer parallelen Datenübertragung müssen die ganzen Leitungen synchron arbeiten, d.h. man bekommt bei zu langen Leitungen oder zu hohem Takt Probleme.

Bei Hypertransport/PCIe usw. sind die einzelnen Lanes aber unabhängig und unsynchron. Es werden wohl Buffer verwendet um das Signal dann wieder zusammenzufügen.

Es sind also wirklich getrennte serielle Leitungen und nicht eine große parallele. Deshalb dürfen die PCIe Lanes ja auch so schön gerade verlaufen im Gegensatz zum extrem schwierigen AGP-Routing wo alles glitzegleichlang sein muss :)

AGP: http://www.hardwarezone.com/img/data/articles/2004/1071/NV40-GPU.jpg
PCIe: http://www.gamepc.com/images/labs/rev-6800gtpcie-chipLG.jpg

Ich denke man sieht was ich meine.

PhoenixFG
2005-07-21, 08:11:48
Sind die Leitungen bei PCIe wirklich unabhängig?

Kleines Gedankenexperiment: Man nehme eine Schnittstelle mit 4 Lanes unterschiedlicher Signallaufzeit. Über diese Schnittstelle soll nun eine größere Datei geschickt werden. Diese wird also vermutlich in Pakete zerstückelt (meinetwegen in Bytes). Diese würden beim Empfänger nun zu unterschiedlichen Zeiten ankommen. Werden diese Pakete dann v. Empfänger in die richtige Reihenfolge gebracht? Wenns nur 4 Pakete sind, ist das vielleicht einfach. Aber bei 1000 Paketen erfordert das sicher einigen Logikaufwand. Und was, wenn die für die Sortierung erforderlichen Puffer voll sind?

Der andere Weg wäre natürlich, dass die "schnellen" Leitungen immer auf die "langsamste" warten müssen, bevor 4 neue Pakete loggeschickt werden dürfen.

MfG

GloomY
2005-07-21, 13:32:02
Sind die Leitungen bei PCIe wirklich unabhängig?Die Erklärung von Coda war mir erst nicht so richtig einleuchtend, aber nach einer längeren Suche habe ich sogar eine Quelle dafür gefunden:

http://www.tecchannel.de/technologie/komponenten/402114/index5.html
Beim seriellen PCI-Express-Interface gibt es, außer bei den einzelnen Verbindungen eines differenziellen Leitungspaares, keine strengen Längenrestriktionen. Denn aus jedem Datenstrom eines Leitungspaares lässt sich der Steuertakt generieren (embedded clock). Dieser Steuertakt arbeitet unabhängig von einem zentralen Frequenzgeber und ermöglicht einen asynchronen Betrieb der Datenleitungen.Bei Hypertransport ist dies im Übrigen nicht der Fall. Hier müssen alle Leitungen gleich lang sein:
http://www.hypertransport.org/members/htc/artwork/3D_DIAGRAMS/AMDWP_AGP_HT_comparison.jpg
Ansonsten könnte ich mir nicht erklären, wie die Windungen auf dieser Grafik zustande kommen.
Zum anderen gibt es bei den 2, 4 und 8 Bit HT Links 4 Clock-Leitungen und bei den 16 und 32 Bit Links 8 Clock Leitungen. Das scheint mir also nicht wirklich asynchron zu sein wie bei PCI-Express.
Kleines Gedankenexperiment: Man nehme eine Schnittstelle mit 4 Lanes unterschiedlicher Signallaufzeit. Über diese Schnittstelle soll nun eine größere Datei geschickt werden. Diese wird also vermutlich in Pakete zerstückelt (meinetwegen in Bytes). Diese würden beim Empfänger nun zu unterschiedlichen Zeiten ankommen. Werden diese Pakete dann v. Empfänger in die richtige Reihenfolge gebracht? Wenns nur 4 Pakete sind, ist das vielleicht einfach.Die Verzögerung ist ja immer die gleiche. Selbst wenn z.B. Leitung 3 immer 500ps langsamer als Leitung 1 ist, kann man trotzdem bestimmen, dass die ersten Bits der 4 Leitungen eben Bit 1 bis 4 sind und die zweiten Bits der 4 Leitungen die Bits 5 bis 8 sind usw.
Der andere Weg wäre natürlich, dass die "schnellen" Leitungen immer auf die "langsamste" warten müssen, bevor 4 neue Pakete loggeschickt werden dürfen.Nein, jede Leitung macht das ganz für sich alleine, ohne sich groß um die anderen zu kümmern.

Juerg
2005-07-21, 22:31:23
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=174320