Prijava

Prijava

Personalizacija

Novice » USB 3.0 črno na belem

Registriraj se strani: « 1 2 »»

Matthai :: 20. nov 2008, 22:03:39

Hmm, o teh 15-20% ne vem nič. Ampak DMA pomeni tole:Direct memory access (DMA) is a feature of modern computers and microprocessors that allows certain hardware subsystems within the computer to access system memory for reading and/or writing independently of the central processing unit. With DMA, the CPU would initiate the transfer, do other operations while the transfer is in progress, and receive an interrupt from the DMA controller once the operation has been done.

Ne razumem kaj tukaj ni jasno.
Zloraba oblasti, avtokracija in tema nikoli ne pridejo hipoma, vedno je vmesno
obdobje mračenja, ko se dan preveša v noč; biti moramo pozorni opazovalci
okolja in varuhi luči, da ne postanemo nemočni ujetniki teme. --W. Douglas

MrStein :: 20. nov 2008, 22:24:04

A treba narisati ?
Če prenos deluje brez CPU, kaj počne CPU ?
Zakaj ni prost ?

Recimo kot je prost, ko teče DMA prenos na SATA vodilu. Ali bilokaterem drugem.
Teštiram če delaž

Mavrik :: 20. nov 2008, 22:36:46

Glej, tebi očitno ni jasno kako DMA prenos deluje. Procesor pove DMA kontrolerju s kod naj prenaša, kam v pomnilnik naj prenaša in koliko, potem pa se umakne z vodila. Tako procesor NE sodeluje pri DMA prenosu, kar je tudi celotna poanta stvari.
Windows fan and proud of it.

kriko1 :: 20. nov 2008, 22:41:13

Zato ker je Direct Memory Access. Torej dostop do pomnilnika se vrži mimo procesorja, ti pa kopiraš iz diska, kateri ima še nek FS zraven.
Ti meriš čisto nekaj drugega.
---
OpenSuSE 11.1 @ 2.6.28-zen1

Zgodovina sprememb…

  • spremenil: kriko1 (20. nov 2008 ob 22:42:03)

TESKAn :: 21. nov 2008, 07:11:19

A treba narisati ?
Če prenos deluje brez CPU, kaj počne CPU ?
Zakaj ni prost ?

Recimo kot je prost, ko teče DMA prenos na SATA vodilu. Ali bilokaterem drugem.


Ko enota konča DMA prenos, je jasno, da bo moral glavni CPU opravit, karkoli se bo s temi podatki naredilo. To počne CPU, sprocesira podatke, ko so ti enkrat v pomnilniku. Samo kopiranje podatkov z naprave v RAM pa poteka brez posredovanja CPUja.
Uf! Uf! Je rekel Vinetou in se skril za skalo, ki jo je prav v ta namen nosil s seboj.

Matthai :: 21. nov 2008, 08:15:16

No, so ti že drugi razložili. Skratka, ko se podatki zapišejo v RAM, CPU ne sodeluje, ko pa se iz RAM-a zapišejo na disk, pa CPU seveda mora sodelovati.

Če pa ti samo pišeš v RAM (recimo naložiž exploit kodo) ali pa bereš iz RAM-a (recimo šifrirne ključe), se pa procesor lahko mirno objema z Windowsi in ne opazi, da mu nek USB ali firewire krade kritične podatke. [:D]
Zloraba oblasti, avtokracija in tema nikoli ne pridejo hipoma, vedno je vmesno
obdobje mračenja, ko se dan preveša v noč; biti moramo pozorni opazovalci
okolja in varuhi luči, da ne postanemo nemočni ujetniki teme. --W. Douglas

MrStein :: 21. nov 2008, 08:59:39

Zgleda da res moram narisati:
- HDSpeed (samo bere sektorje z diska, nato ne počne z njim NIČ, tudi FS-ja ni nobenga)
- pri branju z SATA diska : CPU load 0 do 1 %
- pri branju z USB diska : CPU load 10-20 %

Torej.

A gre za dva "različna" DMA postopka ?
Enkrat CPU naredi eno, v drugem primeru pa nekaj čist drugega ?

kriko1:
Ti meriš čisto nekaj drugega.

Če se po tvoje to meri drugače, pa povej kako.
Teštiram če delaž

TESKAn :: 21. nov 2008, 09:41:46

Jah, USB in SATA disk sta dve različni stvari in nimata enako velikega bufferja. IMO ima tvoj USB disk veliko manjši prostor v RAMu za DMA prenose, kar pomeni da prenaša enako velik podatek v več kosih, kar pomeni večkratno posredovanje CPUja. Recimo 1 GB velik podatek, 10 MB buffer za USB in 100 MB buffer za disk. Za USB bo CPU posredoval 100krat, za SATA pa 10krat. In imaš desetkrat večjo obremenitev pri prenosu z USBja, kot z SATA diska. In tudi če podatke potem vržeš stran - še zmeraj imaš prekinitev, še zmeraj mora CPU sprožit naslednji prenos.


Mind you, zgornje številke so hipotetične in ne odražajo realnega stanja, so samo za ponazoritev (možne) situacije. Da se ne bo kdo obešal na velikost bufferjev [:)].
Uf! Uf! Je rekel Vinetou in se skril za skalo, ki jo je prav v ta namen nosil s seboj.

Zgodovina sprememb…

  • spremenil: TESKAn (21. nov 2008 ob 09:42:10)

Jst :: 22. nov 2008, 00:19:05

Meni in MrStein-u ni jasno naslednje:

DMA: Direct Memory Access. Vsi sodelujoči vemo, da kadar ima naprava možnost DMA, CPU izvrši samo interrupt-e. Kar pobere eno malenkost; kakšen odstotek CPU časa. A ko priklopiš USB ključ, zunanji disk v ohišju preko USB, in pretakaš podatke, očitno DMA ne dela. Vsaj ne po svoji definiciji. Zakaj? Ker je med tem, ko prenašaš podatke, procesor obremenjen. In ne neko malenkost, ampak kar poštenih nekaj deset odstokov CPU časa. In to ni značilno samo za MS platformo. Enako je na linuxu in *bsdju.

Kadar Disk ali pa CD/DVD Rom, BluRay prenaša podatke, CPU ni obremenjen, če uporablja DMA. Če vklopiš PIO, gre vse preko procesorja. Kar zgleda, da se dogaja, ko prenašaš podatke preko USBja.

Obstaja pa še druga razlaga. USBjev protokol je spisan bedasto in implementacija ne more biti kaj drugega, kot bedasta in trati CPU za *brezveze.*
Careful not to overload people by making them listen and think at the same time
-Vain

CrniE :: 22. nov 2008, 00:40:20

USB že uporablja DMA, ampak v resnici niso stvari tako idealne. Če ti kopiraš 1 giga je to še zmeraj ogromno prekinitev in vsega hudiča, usb pa vseeno dela malo drugače kot sata disk, bufferji niso enako veliki itd.

MrStein :: 25. nov 2008, 11:37:11

Še drugi sistem:
- pri branju z diska preko firewire: CPU load 0 do 2 %
- pri branju z diska preko USB : CPU load 10-20 %

Hh, kot če bi delal znanstvene poskuse, da potrdim, da je sonce okroglo ... [:))]
Ali voda mokra... [:)]
Teštiram če delaž
Registriraj se strani: « 1 2 »»