Munkások interjú megjegyzi probléma továbbra is

A probléma az interjú: folyamatos

De én arra gondoltam, ha tudnám fogni ezt a hatást a valóságban. A valóság, mint rendesen, kiderült, hogy egy kicsit bonyolultabb elmélet, de az agy legyőzte ismét az agyban és a számítógép mérkőzés: ezt a kódot a bázis (gondosan válogatott) fog a szinkron módban (-Dasync = false) (690 +/- 1%) ns / üzenetet, és aszinkron (560 +/- 8%) ns / üzenetben.

Azt szeretnénk felvázolni, hogy megértsük, milyen külföldi mondja, hogy mi történik ott?

Azt kell, hogy vegye fel néhány konvencionális memória intenzív feladat, és bontani két fázisra, amelyek mindegyike vonatkozik az adattartalommal. Felvettem a darab adatok formájában egy kellően nagy (összemérhető a mérete L1) tömb dupla []. Maga „üzenet feldolgozása fázis” áll, több írási / olvasási hogy a tömb sejteket. „Többszörös” van választva, hogy a 128, 128 és ezek a sejtek kerülnek kiválasztásra: a teljes tömb álvéletlen algoritmus (LCG típusa: I = (A * I) mod C). Először is, az első fázisban csinálja a saját tömb, majd a második szakaszban pontosan ugyanezt a lány -, és így az egyes üzenetek, amelyek a légió 1 millió minden körben. Igen, amit diktálnak a kódot:
Érdekes kérdés №1: ha egy ál skakanie tömb helyébe alagút fix pályán, a teljesítménybeli különbség gyakorlatilag eltűnik. Inkább még kis mértékben, szinte a pont a hiba, akkor kezd nyerni a szinkron változat. Miért? №2 érdekes kérdés: ha félre mérlegelt lehetőség - milyen egyéb hatások az előnyt, „párhuzamosított” változata a soros? Ui Igen, az úton - mi (Deutsche Bank) toborozni az embereket. Úgy tűnik, hogy 3-4 feladatot, most nyitva van. Akkor írj nekem közvetlenül, és - és kaptam egy csomó érdekes ötlet az interjú van :)

A kérdésre adott választ 1: bekapcsolja prefetching. A tény az, hogy ha történetesen vándorol át egy tömb, akkor annak valószínűsége, hogy cache-miss méretétől függően a cache.
Ha prefetching be van kapcsolva, a cache-miss gyakorlatilag hiányzik.

Igen, pontosan. Mi történik, ha megváltoztatja a lépés nagysága - például, ha egy lépést 1, 8, 256?

Úgy gondolom, hogy ha megteszi az 1. lépést, és 8, akkor kapcsolja prefetching, mert Ebben az esetben minden egyes alkalommal kerül betöltésre az azonos, vagy a következő gyorsítótár sor, és abban az esetben a 256 nem kapcsol be, mert a nem indul a következő gyorsítótár sort, és a mulasztást. Azonban azt hallottam, hogy vannak olyan prefetchery, amelyek felismerik az állandó pályán, így minden attól függ, az adott vas.

Ami a második kérdést, tudok képzelni egy olyan helyzetet, ahol a második processzor pörög szál, amely elválasztja a forrásokat a mi feladatunk.

Igen, elvileg helyes. Ez csak az Intel prefetcher érzékeli memóriavizsgálatok állandó pályán maximum 2048 bájt (azt hiszem). Tehát lépésekben akár 256 * kettős prefetching fog működni.

De nagyon érdekes kérdés (ezt most nem tudom a választ, mégis), amiért néhány lépést (pl 73, 81, 97, 105, 113, 121, 127, 129) egy aszinkron változata a munka-szor lassabb (a 5- 8), mint a többiek? Egyidejű azonos változat úgy tűnik, hogy nincs ilyen hatása bizonyítja.