2009-12-06 6 views
1
  1. 단일 코어 CPU 또는 단일 CPU가있는 시스템은 병렬 처리를 수행 할 수 없습니다. 허위 사실?멀티 스레드 처리와 병렬 처리의 차이점은 무엇입니까?

  2. 단일 코어 단일 프로세스 CPU에서 주어진 시간에 많은 스레드가 실행 중일 때 (수면 스레드 제외) 많은 프로세스에 관계없이 하나의 스레드의 어셈블리 명령어 만 실행될 수 있습니다. 허위 사실?

너무 많은 질문에 대해 죄송합니다. 모두 관련있는 것으로 보입니다.

답변

4

하이퍼 스레딩 (hyperthreading)이없는 단일 코어 CPU에서 실제로 실행되는 스레드는 하나뿐입니다 (예). 그러나 이것이 병렬 처리를 완전히 배제하지는 않습니다. 예를 들어, 당신은 달성하기 위해 세 가지 작업 할 수 : 네트워크 활동을 많이하고있다

  • 하나
  • 디스크 활동을 많이하고있다 하나는 CPU 활동을 많이하고있다
  • 하나

스레드를 사용하여이 세 가지를 병렬로 실행하면 단일 코어 컴퓨터에서도 성능이 향상 될 수 있습니다. 과도한 CPU 활동은 다른 활동 중 하나가 처리 할 데이터가 더있을 때까지 대기해야하지만 전체 효과은 병렬 처리입니다. 이는 기본적으로 CPU를 사용하지 않고 "다른 것들"(디스크 헤드 이동, 원격 시스템에서 일부 작업을 수행하는 웹 서비스)이 발생할 수 있기 때문입니다.

+0

여전히 가장 엄격한 의미에서 병렬 처리가 이루어지지 않을 것입니다. 예를 들어 어느 한 시점에서 CPU에 있지만, 작은 시간 간격을두고 여러 개를 조사하면 각 단계가 전체 시스템을 바쁘게 유지할 수 있습니다. 예. –

+0

@ 시므온 : "병렬 처리"의 정의에 달려 있습니다. IMO - 디스크 헤드를 옮기고 웹 서비스를 호출하는 것이 "처리 중"으로 계산되지 않아야합니까? 그것은해야 할 일이고, 동시에 진행됩니다. 병렬 처리로 간주되는 * 실용적인 목적으로 생각합니다. 실제로 웹 서비스의 CPU가 로컬 시스템의 CPU와 동시에 실행되는 경우 시스템을 통한 병렬 계산입니다. –

+0

또는 실제로 로컬 네트워크 카드 나 DMA 컨트롤러의 디스크 컨트롤러에있는 프로세서가 DMA 전송을 수행합니다. – caf

3
  1. 참.

  2. 참. 하나의 CPU 만 있으면 한 번에 하나의 명령 시퀀스 만 실행될 수 있습니다.

+2

많은 CPU가 요즘 하나 이상의 코어를 가지고 있습니다. CPU 코어를 대신 사용하십시오. – GraemeF

1
  1. 는 "병렬"처리에 의해 무엇을 의미하는지에 따라 달라집니다. 분명한 대답을 얻기 전에 명확한 설명이 필요합니다. 하나 개의 코어를 가진 하나 개의 프로세서가 두 개의 "가상"코어 자체를 제공 곳 -

  2. 는 일부 프로세서는 하이퍼 스레딩을 지원

하는 것으로 ... 일반적으로 사실이지만. 이를 통해 프로세서는 한 스레드에서 명령을 실행하고 다른 프로세서에서는 메모리 액세스를 기다리는 등의 작업을 수행 할 수 있습니다.

심지어 단일 코어 단일 프로세서 컴퓨터 일지라도 프로세서에 여러 스레드를 동시에 가질 수 있습니다.

+0

안녕하세요 Anon, 병렬 처리가 의미하는 바는 주어진 시간 (예 : CPU주기가 공유되지 않음)에서 기계 명령어를 실행하는 두 개 이상의 스레드였습니다. 시간 내 줘서 고마워. – Murali

+0

이 경우 예, 단일 코어를 가진 기계는 한 번에 둘 이상의 기계 명령을 실행할 수 없습니다. 하지만 하이퍼 스레딩으로 "가짜"수 있습니다. 하이퍼 스레딩을 사용하면 메모리 액세스를 기다릴 때조차 실제로 유용한 작업을 수행 할 수 있습니다. –

+0

@Anon, 무슨 뜻인지 잘 모르겠습니다.HyperThreading을 사용하면 여러 가지 산술 명령어를 동시에 실행할 수 있습니다. 매우 특정한 (쓸모없는) 코드를 사용하면 하나의 HT 프로세서로 2 배의 속도 향상을 달성 할 수있었습니다. 그래서 주어진 정의에 따르면, ht는 실제로는 쓸모가 없더라도 병렬 처리입니다. – Ben