RTV forum PL | NewsGroups PL

Sprzętowe wspomaganie przełączania procesów w procesorach ARM - jak to działa?

procesory wewnętrzna konstrukcja

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Sprzętowe wspomaganie przełączania procesów w procesorach ARM - jak to działa?

Adam GĂłrski
Guest

Tue Jul 16, 2013 10:06 am   



Witam,

Przeglądam sobie kolejne procesory ARM i zastanawia mnie jedna sprawa.
Nigdzie nie widzę mechanizmów sprzętowego wspomagania przełączania
procesów/wątków. Czy to ja źle patrzę czy to dalej odbywa się jak kiedyś
- tzn zrzut wszystkich rejestrów do pamięci i pobranie nowego zestawu
dla kolejnego procesu.
Pamiętam że było coś takiego bodajże w procesorach Ubicoma ale w żadnym
z armów tego nie widzę.

Nie chodzi mi o MMU ani o MPU bo to dotyczy pamięci i izolacji procesów.
Chodzi mi o mechanizmy sprzętowego wspomagania przełączania procesów.
Jak to się może obecnie nazywać ?

Pzdr

Adam

Michoo
Guest

Tue Jul 16, 2013 10:20 am   



On 16.07.2013 12:06, Adam Górski wrote:
Quote:
Witam,

Przeglądam sobie kolejne procesory ARM i zastanawia mnie jedna sprawa.
Nigdzie nie widzę mechanizmów sprzętowego wspomagania przełączania
procesów/wątków.

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471c/Cjaebbeh.html


Quote:
Czy to ja źle patrzę czy to dalej odbywa się jak kiedyś
- tzn zrzut wszystkich rejestrów do pamięci i pobranie nowego zestawu
dla kolejnego procesu.

Tak i nie - masz instrukcje, które to upraszczają, ale nie jest to
prosta podmiana indeksu w tablicy procesów(jak by to wyglądało przy
całkowicie sprzętowej obsłudze kontekstu).

Quote:
Pamiętam że było coś takiego bodajże w procesorach Ubicoma ale w żadnym
z armów tego nie widzę.

Niezgodne z filozofią RISC.

--
Pozdrawiam
Michoo

Adam GĂłrski
Guest

Tue Jul 16, 2013 10:58 am   



Quote:
Przeglądam sobie kolejne procesory ARM i zastanawia mnie jedna sprawa.
Nigdzie nie widzę mechanizmów sprzętowego wspomagania przełączania
procesów/wątków.

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471c/Cjaebbeh.html



Czy to ja źle patrzę czy to dalej odbywa się jak kiedyś
- tzn zrzut wszystkich rejestrów do pamięci i pobranie nowego zestawu
dla kolejnego procesu.

Tak i nie - masz instrukcje, które to upraszczają, ale nie jest to
prosta podmiana indeksu w tablicy procesów(jak by to wyglądało przy
całkowicie sprzętowej obsłudze kontekstu).

Pamiętam że było coś takiego bodajże w procesorach Ubicoma ale w żadnym
z armów tego nie widzę.

Niezgodne z filozofią RISC.


Idąc tym tropem nie ma takich mechanizmów w żadnym procesorze bo nawet
x86 to dzisiaj RISC , o x64 nawet nie wspominając.

Pzdr

Adam

Michoo
Guest

Tue Jul 16, 2013 11:24 am   



On 16.07.2013 12:58, Adam Górski wrote:
Quote:

Pamiętam że było coś takiego bodajże w procesorach Ubicoma ale w żadnym
z armów tego nie widzę.

Niezgodne z filozofią RISC.


Idąc tym tropem nie ma takich mechanizmów w żadnym procesorze bo nawet
x86 to dzisiaj RISC , o x64 nawet nie wspominając.

Ni. x86 to dzisiaj nadal CISC. To np. Sandy Bridge na którym amd64 jest
uruchamiany/emulowany jest rzeczywiście RISC-like.



A wracając do problemu - sprzętowe implementacja zmian kontekstu to
zbędna komplikacja jeżeli można to zrobić RISC-like.

Np na cortex-m3 całość sprowadza się do ustawienia wskaźnika na
thread-control-block i wczytania rejestrów. Używasz instrukcji ogólnego
przeznaczenia a całe wsparcie sprowadza się do projektu architektury,
która to umożliwia.


--
Pozdrawiam
Michoo

Adam GĂłrski
Guest

Tue Jul 16, 2013 12:32 pm   



W dniu 2013-07-16 13:24, Michoo pisze:
Quote:
On 16.07.2013 12:58, Adam Górski wrote:

Pamiętam że było coś takiego bodajże w procesorach Ubicoma ale w żadnym
z armów tego nie widzę.

Niezgodne z filozofią RISC.


Idąc tym tropem nie ma takich mechanizmów w żadnym procesorze bo nawet
x86 to dzisiaj RISC , o x64 nawet nie wspominając.

Ni. x86 to dzisiaj nadal CISC. To np. Sandy Bridge na którym amd64 jest
uruchamiany/emulowany jest rzeczywiście RISC-like.

Czy mógłby kolega zapodać kilka słów kluczowych lub sznurków ?
Mając dziesiątki lub setki o ile nie tysiące różnych wątków/procesów
ciągłe przeładowywanie rejestrów musi kosztować masę czasu jeżeli jest
to czysto programowe

Quote:
A wracając do problemu - sprzętowe implementacja zmian kontekstu to
zbędna komplikacja jeżeli można to zrobić RISC-like.

Pewnie , tylko jest gdzieś granica opłacalności odnośnie minimalnego
czasu przydziału dla wątku/procesu.
Quote:

Np na cortex-m3 całość sprowadza się do ustawienia wskaźnika na
thread-control-block i wczytania rejestrów. Używasz instrukcji ogólnego
przeznaczenia a całe wsparcie sprowadza się do projektu architektury,
która to umożliwia.

A ma może kolega jakiś sznurek do tego opisu thread-control-block ?
Pewnie google wie ale może kolega wie lepiej...

Pzdr

Adam

Michoo
Guest

Tue Jul 16, 2013 4:26 pm   



On 16.07.2013 14:32, Adam Górski wrote:
Quote:
W dniu 2013-07-16 13:24, Michoo pisze:
On 16.07.2013 12:58, Adam Górski wrote:

Pamiętam że było coś takiego bodajże w procesorach Ubicoma ale w
żadnym
z armów tego nie widzę.

Niezgodne z filozofią RISC.


Idąc tym tropem nie ma takich mechanizmów w żadnym procesorze bo nawet
x86 to dzisiaj RISC , o x64 nawet nie wspominając.

Ni. x86 to dzisiaj nadal CISC. To np. Sandy Bridge na którym amd64 jest
uruchamiany/emulowany jest rzeczywiście RISC-like.

Czy mógłby kolega zapodać kilka słów kluczowych lub sznurków ?

microcode, x86 context switch, TSS Descriptor, call gate


Quote:
Mając dziesiątki lub setki o ile nie tysiące różnych wątków/procesów
ciągłe przeładowywanie rejestrów musi kosztować masę czasu jeżeli jest
to czysto programowe

Jak masz tysiące różnych wątków próbujących działać _na raz_ to masz
system który większość czasu jedyne co robi to marnuje zasoby na ich
przełączanie - niezależnie od tego czy masz wsparcie sprzętowe czy nie.

I tak najdroższe w całej zabawie w multi-tasking (nie dotyczy właśnie
maleństw w rodzaju m-3 z wewnętrznym ramem - tam to frunie)jest
zazwyczaj psucie cache, przeładowywanie MMU i tym podobne sprawy. Zmiana
kontekstu ma główne znaczenie przy wywołaniach systemowych.

Quote:

A wracając do problemu - sprzętowe implementacja zmian kontekstu to
zbędna komplikacja jeżeli można to zrobić RISC-like.

Pewnie , tylko jest gdzieś granica opłacalności odnośnie minimalnego
czasu przydziału dla wątku/procesu.

Na x86 masz do tego instrukcję CISC, na m-3 robisz to 3 instrukcjami
RISC. I tak limitujące będzie (jeżeli chodzi o samo działanie procka)
odczytanie z pamięci czy to stanu (x86) lub rejestrów(arm).

Quote:

Np na cortex-m3 całość sprowadza się do ustawienia wskaźnika na
thread-control-block i wczytania rejestrów. Używasz instrukcji ogólnego
przeznaczenia a całe wsparcie sprowadza się do projektu architektury,
która to umożliwia.

A ma może kolega jakiś sznurek do tego opisu thread-control-block ?

Ma. Wskazuje na Cortex-M3 Technical Reference Manual.

--
Pozdrawiam
Michoo

Adam GĂłrski
Guest

Wed Jul 17, 2013 10:38 am   



Quote:
Pamiętam że było coś takiego bodajże w procesorach Ubicoma ale w
żadnym
z armów tego nie widzę.

Niezgodne z filozofią RISC.


Idąc tym tropem nie ma takich mechanizmów w żadnym procesorze bo nawet
x86 to dzisiaj RISC , o x64 nawet nie wspominając.

Ni. x86 to dzisiaj nadal CISC. To np. Sandy Bridge na którym amd64 jest
uruchamiany/emulowany jest rzeczywiście RISC-like.

Czy mógłby kolega zapodać kilka słów kluczowych lub sznurków ?

microcode, x86 context switch, TSS Descriptor, call gate


Mając dziesiątki lub setki o ile nie tysiące różnych wątków/procesów
ciągłe przeładowywanie rejestrów musi kosztować masę czasu jeżeli jest
to czysto programowe

Jak masz tysiące różnych wątków próbujących działać _na raz_ to masz
system który większość czasu jedyne co robi to marnuje zasoby na ich
przełączanie - niezależnie od tego czy masz wsparcie sprzętowe czy nie.

I tak najdroższe w całej zabawie w multi-tasking (nie dotyczy właśnie
maleństw w rodzaju m-3 z wewnętrznym ramem - tam to frunie)jest
zazwyczaj psucie cache, przeładowywanie MMU i tym podobne sprawy. Zmiana
kontekstu ma główne znaczenie przy wywołaniach systemowych.


A wracając do problemu - sprzętowe implementacja zmian kontekstu to
zbędna komplikacja jeżeli można to zrobić RISC-like.

Pewnie , tylko jest gdzieś granica opłacalności odnośnie minimalnego
czasu przydziału dla wątku/procesu.

Na x86 masz do tego instrukcję CISC, na m-3 robisz to 3 instrukcjami
RISC. I tak limitujące będzie (jeżeli chodzi o samo działanie procka)
odczytanie z pamięci czy to stanu (x86) lub rejestrów(arm).


Np na cortex-m3 całość sprowadza się do ustawienia wskaźnika na
thread-control-block i wczytania rejestrów. Używasz instrukcji ogólnego
przeznaczenia a całe wsparcie sprowadza się do projektu architektury,
która to umożliwia.

A ma może kolega jakiś sznurek do tego opisu thread-control-block ?

Ma. Wskazuje na Cortex-M3 Technical Reference Manual.


Wielkie dzięki za informacje. Dalej już będzie z górki.

Adam

elektroda NewsGroups Forum Index - Elektronika Polska - Sprzętowe wspomaganie przełączania procesów w procesorach ARM - jak to działa?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map