È possibile eseguire contemporaneamente due processi su un core della CPU, che presenta hyper threading? Imparo da Internet. Ma, non vedo una risposta chiara e diretta.È possibile eseguire contemporaneamente due processi su un core della CPU?
Modifica: Grazie per la discussione e la condivisione! Il mio portafoglio per postare la mia domanda qui non è discutere del calcolo parallelo. Sarà troppo grande per essere discusso qui. Voglio solo sapere se un'applicazione multithread può trarre più benefici dall'hyper threading rispetto a un'applicazione multi processo. Dopo ulteriori letture, ho seguito le mie note di apprendimento.
1) Una tecnologia Hyper-Threading abilitata CPU Core ha due set di stato CPU e logica di interrupt. Nel frattempo, ha solo un set di unità di esecuzione e cache. (Non ho ancora studiato la pipeline)
2) I vantaggi del multi threading da Hyper Threading solo se si verifica una latenza in alcuni thread eseguiti. Penso che questo punto possa essere mappato esattamente alla ragione comune del perché e quando il programmatore software usa il multi-thread. Se l'applicazione multi-thread è stata ottimizzata. Potrebbe non ottenere alcun beneficio dalla filettatura di Hypter.
3) Se lo stato della CPU si associa allo stato di elaborazione, credo che Marc abbia ragione sul fatto che l'applicazione a più processi possa anche trarre maggior vantaggio dalla tecnologia di hyper-threading.
4) Quando il produttore di CPU dice "thread", sembra che il loro "thread" sia diverso dal thread che conosco come programmatore java?
Grazie per la conferma che due processi non possono essere eseguiti sullo stesso core della CPU contemporaneamente. Ma hai anche parlato di thread nella tua risposta. Mi sembra che due thread non possano essere eseguiti contemporaneamente? Oppure parli solo del caso in cui due thread hanno risorse condivise? Due thread, che non hanno risorse condivise, possono essere eseguiti simultaneamente sullo stesso core con hyper threading, giusto? –
Possono coesistere due thread all'interno della pipeline di un determinato core, in varie fasi di decodifica/preelaborazione/esecuzione/finalizzazione. Dove in tutto ciò si verifica l'effettiva "esecuzione" dipende da come si definisce "esecuzione". Non ci saranno mai più istruzioni di un thread in una data fase della pipeline allo stesso tempo, quindi non c'è ancora alcuna esecuzione parallela. appare solo parallelamente. –
grazie per aver chiarito. sembra che la nostra discussione stia scivolando verso l'esecuzione parallela e la programmazione multitasking e multithread. Secondo la mia comprensione fino ad ora, penso che possiamo dire che un'applicazione multi-thread ha la possibilità di trarre beneficio dalla CPU hyperthreading. e un'applicazione multi-processo non può trarre vantaggio dall'iper-threading. sarai d'accordo con me? –