수퍼 스칼라와 멀티 코어의 차이점은 무엇입니까?


11

이것을 이해할 수없는 것 같습니다. 수퍼 스칼라와 멀티 코어 프로세서의 차이점은 무엇입니까?

나는 그것들을 계속 섞어서 그들이하는 일에 대한 몇 가지 간단한 점이 좋을 것입니다.


wikipedia에 따르면, 슈퍼 스칼라 프로세서는 단일 코어이거나 다중 코어 설계 일 수 있습니다. en.wikipedia.org/wiki/Superscalar_processor 2 차 파라
Avi Mehenwal

답변:


15

수퍼 스칼라 프로세서는 단일 클록 사이클 동안 여러 명령어를 디스패치한다는 것을 의미합니다. 이것이 멀티 코어와 차별화되는 이유는 하나의 명령 카운터 만 받기 때문 입니다. 따라서 여러 명령을 기내에서 추적 할 수 있지만 모든 명령은 단일 프로그램에서 온 것입니다. 이것은 여전히 ​​하나의 프로세스입니다. 이제는 "하나의 명령 카운터를 얻습니다."라고 말하면서 기술적으로는 일부 분기 예측 체계를 사용하지 않고 코드에서 불일치가 발생하지 않는다는 점이 사실입니다 (추론 적 실행 : 분기를 동시에 실행하고 "잘못된" "예측 결과).

멀티 코어에 들어가면 여러 개의 명령 스트림이 동시에 실행됩니다. 중요한 부분은 각각의 단일 프로세스를보다 빠르게 실행하기 위해 각 코어 (자체 명령 카운터로 실행)가 수퍼 스칼라 일 수 있다는 것입니다!

매우 긴 명령어 또는 "VLIW"를 사용하여 파이프 라이닝 또는 순서가 잘못된 실행없이 수퍼 스칼라를 가질 수 있습니다. 이것을 "정적"슈퍼 스칼라라고도합니다 (즉, 코드 자체에 있음). 여기에는 기본적으로 여러 명령을 동시에 실행할 수있는 충분한 구성 요소가 있으며 한 번에 여러 명령을 가져 와서 실행할 수 있습니다. 가장 간단한 형태로, "이 프로세서는 항상 두 개의 명령어를 동시에 가져 와서 실행할 것"이라고 상상해보십시오. 그런 다음 코더가 동일한 프로세스에서 동시에 수행 할 작업을 찾을 수 있다면 처리량은 두 배가됩니다! 두 개의 명령어를 찾을 수 없다면, 하나의 명령어와 NOP를 페어링하면됩니다. 3, 4 또는 그 이상의 명령을 동시에 실행할 수있는 더 나은 버전의 프로세서를 만들면 모든 이전 코드가 중단되므로이 아이디어는 그리 좋지 않습니다. 그러나 그들은 이것을 매우 독창적 인 방법으로 해결했습니다. 더 알고 싶다면 병렬 명령어 컴퓨팅이나 "EPIC"을 확인하십시오.

파이프 라이닝이 포함 된 동적 슈퍼 스칼라는 데이터 독립적 명령과 명령 수준 병렬 처리를 모두 활용할 수 있으므로 이러한 강력한 조합이 가능합니다. 기본적으로 충분한 하드웨어가 있으면 가능한 한 많은 독립 명령을 동시에 실행할 수 있습니다.

파이프 라이닝과 비 순차적 실행을 포함한 동적 슈퍼 스칼라는 본질적으로 명령 수준 병렬 처리의 한계였습니다. 동일한 단계에서 여러 명령을 동시에 실행하여 데이터 종속성없이 작동하는 작업을 찾으려고 시도했습니다. 당신은 순서가 잘못 될 수 있고, 순서가 잘못 될 수 있습니다. 수퍼 스칼라 작업을하는 동안 머리를 똑바로 유지하기 위해해야 ​​할 모든 것들이 있습니다. 멀티 코어는 "이봐 프로그래머 야! 동시에 해결할 수있는 여러 문제를 줘!" 그런 다음 프로그래머는 컴파일 된 어셈블리에서 단 몇 줄만으로 독립적으로 해결할 수있는 문제를 볼 수 있으므로 멀티 코어 용 솔루션을보다 효율적으로 프로그래밍 할 수 있습니다.

수퍼 스칼라는 "이 두 프로그램을 더 빨리 실행하는 방법"과 같은 문제도 해결할 수 없습니다. 각 독립 프로그램 만 더 빨리 실행할 수있었습니다.

그것이 도움이되기를 바랍니다.

--편집하다--

여러 아이디어를 혼란스럽게 한 ajs410의 요점을 고려하도록 수정되었습니다.


예, 훨씬 명확 해졌습니다. 감사합니다! 그건 그렇고, 당신이 찾고있는 단어는 "추론 적 실행"이라고 생각합니다. 어쨌든 다시 한번 감사합니다.
marsrover

1
@KitScuzz의 설명을 좀 더 복잡하게 만들려면 HyperThreading
ppeterka을

나는 이것이 스칼라, 비 순차적, 파이프 라이닝을 흐리게한다고 생각합니다. 특히, 수퍼 스칼라는 "4 개의 ALU가 있으므로이 4 개의 추가 명령어 (단일 스레드에서!)를 가져 와서 동일한 클럭주기 동안 실행할 수 있습니다"라고 말합니다. 비 순차적 실행은 명령 레벨 병렬성을 최대화하기 위해 데이터 종속성을 중심으로 명령 스트림을 재 배열합니다. 파이프 라인은 기존 지침이 진행중인 동안 새로운 지침을 발행합니다. 비 순차적 실행 및 파이프 라이닝은 슈퍼 스칼라 실행과 강력한 시너지 효과를 갖지만 정의를 만족시키기 위해 반드시 필요한 것은 아닙니다.
ajs410

결정된! 지연 돼서 죄송합니다.
Kit Scuzz

1

80486 또는 Pentium과 같은 이전 프로세서를 되돌아 보면 CPU는 단일 논리 처리 단위였습니다. 한 번에 하나의 명령 스트림을 실행합니다. 단일 CPU도 단일 실리콘 칩이었습니다. 더 많은 처리 성능을 원한다면 별도의 CPU 두 개에 맞는 슬롯이있는 값 비싼 서버 마더 보드를 구입할 수 있습니다. 그런 다음 두 개의 CPU 시스템과 두 개의 처리 코어가 있습니다.

무어의 법칙 (Moore 's Law)은 실리콘에 너무 많은 트랜지스터가있어 두 개의 CPU에 대한 모든 회로를 단일 칩에 넣을 수 있음을 의미했습니다. 이제 이름을 혼동 할 가능성이 있습니다. 두 개의 CPU가 있다고 가정하면 이전 스타일의 두 실리콘 패키지 또는 새로운 단일 실리콘 패키지가 있지만 두 프로세서의 처리 설정이 있음을 의미 할 수 있습니다. 이 문제를 해결하기 위해 이제 CPU는 단일 실리콘 패키지이고 코어는 단일 논리 처리 장치입니다.

수퍼 스칼라 (Super-scalar)는 코어 내에서 성능을 향상시키고 평균주기 당 더 많은 명령어를 처리 할 수 ​​있도록하는 기술을 말합니다. 스칼라 프로세서는 사이클 당 최대 하나의 명령을 실행합니다. 수퍼 스칼라는 사이클 당 둘 이상의 명령을 잠재적으로 실행할 수 있음을 의미합니다. 예를 들어, 프로세서에 정수 산술 용 함수 단위와 부동 소수점에 대한 기능 단위가있는 경우 두 명령어를 동시에 실행하기 위해 동시에 둘 다 사용하지 않는 이유는 무엇입니까? 3 개의 정수 단위와 2 개의 부동 소수점 단위가있는 경우 어떻게합니까? 이제 병렬 실행의 가능성이 훨씬 높아졌습니다. 그러나 구현을 위해서는 더 많은 트랜지스터가 필요하고 안정적으로 작동하려면 훨씬 더 복잡한 논리가 필요합니다. 실제 세계에서는 서로 칭찬하기 때문에 비 순차 설계와 함께 수퍼 스칼라를 사용하는 경향이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.