2013-05-06 14 views
7

Czy w procesorze wieloprocesorowym poszczególne procesory konkurują o tę samą przepustowość pamięci lub czy uzyskują dostęp do pamięci DRAM niezależnie?Czy wiele procesorów konkuruje o tę samą przepustowość pamięci?

Innymi słowy, jeśli program ogranicza przepustowość pamięci, powiedzmy, 8-rdzeniowy system z 1-procesorem, przejście na 4-procesorową maszynę 4-rdzeniową z 4 rdzeniami ma szansę przyspieszyć (zakładając procesory i pamięć DRAM są porównywalne)?

Odpowiedz

1

Czy wiele procesorów konkuruje o tę samą przepustowość pamięci?

Niekoniecznie. Non-Uniform Memory Access i multi-channel memory architecture może zapewnić wyższą łączną przepustowość pamięci niż to, co można byłoby uzyskać za pomocą pojedynczego procesora.

+0

Jeśli próbujesz odpowiedzieć na pytanie, udzielasz odpowiedzi na zupełnie inne pytanie, a nie na pytanie, które zadałeś w tym temacie. Po prostu zapytałeś 1) Czy wiele procesorów konkuruje o tę samą pamięć i 2) Czy program zyska, dodając więcej procesorów. Na które dostałem dwie doskonale poprawne odpowiedzi. Ty, przeciwnie, stwierdziliście, że dwa źródła, które dostarczacie, oferują większą przepustowość pamięci dla pojedynczego procesora. Znowu nie jest to odpowiedź na twoje własne pytanie, ale zupełnie nowa. Wprowadź zmianę, jeśli chcesz zmienić swoje pytanie –

2

Tak, wszystkie procesory konkurują o tę samą przepustowość. Jest tylko jedno połączenie sprzętowe z układu CPU do pamięci RAM, więc wszystkie wejścia muszą przez nie przejść.

Różne poziomy pamięci podręcznej procesora CPU mogą być współużytkowane lub nie, aby zmniejszyć ten problem. Tylko chybione pamięci podręczne muszą przejść do samej pamięci RAM. Patrz: http://en.wikipedia.org/wiki/CPU_cache#Multi-core_chips

+0

* tylko jedno połączenie sprzętowe z układu procesora do pamięci RAM * - Moje pytanie dotyczy raczej wielu procesorów zamiast wielu rdzeni na tym samym procesorze. Nie jest dla mnie jasne, czy odpowiedź dotyczy ich. – MaxB

+0

@MaxB, masz rację, że nie w pełni rozumiem to pytanie. Wiele procesorów może mieć niezależny dostęp do różnych banków pamięci, ale nie jestem dostatecznie zaznajomiony z tymi ustawieniami, aby powiedzieć coś więcej. –

+0

Pytanie dotyczy wielu procesorów, a nie wielu rdzeni. –

3

Odpowiedź na główne pytanie brzmi: Zależy od. Od czego to zależy? To zależy od obozu, w którym znajduje się twój zestaw, a pod względem technicznym są dwa.

W pierwszym obozie, zwanym Wielordzeniową z dzieloną pamięcią, odpowiedź na twoje pytanie brzmi "Tak". W tym modelu, jeśli chcesz, wiele procesorów posiadających wiele rdzeni współdzieli pamięć za pomocą wspólnej magistrali (czyli tam, gdzie dostaniesz wąskie gardło) i poza tym, nie ma nic łączącego procesory razem. Jest to kategoria/obóz/model, w którym znajduje się typowy komputer klasy konsumenckiej.

W drugim obozie, zwanym Multicore z rozproszoną pamięcią, odpowiedź na twoje pytanie brzmi "Nie". Ten scenariusz konfiguracji sprzętu oznacza, że ​​każdy procesor ma swoją prywatną pamięć, ale istnieje połączenie między procesorami bezpośrednio. Protokół umożliwiający stworzenie tego scenariusza to Message Passing Interface. Oznacza to również, że grupa procesorów fizycznie nie musi znajdować się w tym samym pudełku lub pomieszczeniu, do którego ma dostęp. Prawdopodobnie nie znajdziesz tego typu w domu. Pomyśl o obiektach badawczych, laboratoriach, uniwersytetach, średnich przedsiębiorstwach itp.

Aby odpowiedzieć na twoje drugie pytanie. Odpowiedź jest również w zależności od. I to zależy, ponieważ trzeba wiedzieć, czy program został napisany w celu wykorzystania paralelizmu z równoległymi możliwościami systemu. Chociaż twój komputer klasy konsumenckiej mający jeden lub dwa procesory dzieli jedną szynę pamięci, jeśli program został napisany z myślą o równoległości, zauważysz wzrost wydajności. W przeciwnym razie seryjne instrukcje pochodzące z programu będą wykonywane seryjnie tylko na jednym rdzeniu.

Jeśli interesuje Cię wielordzeniowe przetwarzanie i jak pamięć jest dostępna za pośrednictwem programu, dobrym "zasobem bramy" do rozbudowy twojej czaszki jest Flynn's Taxonomy). Po prostu Google zajmie ci króliczą dziurę, jeśli jesteś zainteresowany.

Edytuj: Aby dać kredyt tam, gdzie należy się kredyt, bardzo polecam profesjonalne programowanie równoległe w języku C# autorstwa Gastona C. Hillara. Ta zachwycająca książka była dla mnie najbardziej odkrywcza na temat paralelizmu w mojej krótkiej karierze. Pomaga w oczyszczeniu błotnistej wody z rozróżnienia między programowaniem równoległym a programowaniem wielordzeniowym i rodzajami przetwarzania wielordzeniowego, o których właśnie wspomniałem, wraz z diagramami!

+0

* odpowiedź na twoje pytanie brzmi "tak" * Uważam, że jest to ogólnie nieprawidłowe, w zależności od sprzętu. Dzięki NUMA różne procesory mogą mieć oddzielne kanały dostępu do DRAM. – MaxB

+0

* poza tym nie ma nic łączącego procesory razem * Jest to również niepoprawne (patrz odpowiedź Csaby). – MaxB

0

Jeśli korzystasz z relatywnie nowego sprzętu, a ograniczenia pamięci w oprogramowaniu częściowo wynikają z komunikacji między procesorem a CPU, masz duże szanse na skalowalność. Starsze architektury SMP x86 wykorzystywały jedną magistralę FSB, a każdy procesor mógł dzielić dane z innymi tylko za pomocą tej pojedynczej magistrali FSB. Dzięki procesorom serwerowym Opteron rdzenie procesorów były również połączone z innymi rdzeniami procesora indywidualnie przez dedykowane linie Hyper-Transport. To spowodowało, że serwery Opteron skalowały się znacznie lepiej niż serwer Intela w tym czasie. Ale od wielu lat temu Intel zatrudnił inżynierów, którzy opracowali Hyper-Transport dla AMD (a dla historii, z których inżynierowie korzystali ze swoich doświadczeń uzyskanych z magistrali Alpha EV6), opracowali również skalowalną architekturę łączącą procesor z architekturą SMP o nazwie QPI dla Intela. Tak więc dzisiejsze produkty serwerowe Intela są również bardziej skalowalne niż stare komputery FSB. Jeśli na serwerze nie ma architektury x86, prawdopodobnie masz również architekturę skalowalną w ten sposób. W takim przypadku, jeśli masz takie oprogramowanie, które wymaga interakcji między rdzeniami, może to znacznie przyspieszyć.

Powiązane problemy