간단한 대답

간단한 대답

2014년에는 동시성 기능이 뛰어나다고 선전되는 프로그래밍 언어가 많이 들렸습니다. 동시성은 성능 향상에 매우 중요하다고 합니다.

이 진술을 하면서 많은 사람들은 다음과 같은 2005년 기사를 다시 지적합니다.공짜 점심은 끝났습니다: 소프트웨어의 동시성을 향한 근본적인 전환. 기본적인 주장은 프로세서의 클럭 속도를 높이는 것이 점점 더 어려워지고 있지만 여전히 칩에 더 많은 코어를 탑재할 수 있으며 성능 향상을 얻으려면 다중 코어를 활용하도록 소프트웨어를 작성해야 한다는 것입니다.

몇 가지 주요 인용문:

우리는 500MHz CPU가 1GHz CPU에 양보하고 2GHz CPU에 양보하는 등의 현상에 익숙합니다. 오늘날 우리는 주류 컴퓨터의 3GHz 범위에 있습니다.

핵심 질문은 언제 끝날 것인가이다. 결국, 무어의 법칙은 기하급수적인 성장을 예측하며, 분명히 기하급수적인 성장은 우리가 엄격한 물리적 한계에 도달하기 전에는 영원히 지속될 수 없습니다. 빛은 더 이상 빨라지지 않습니다. 성장은 결국 느려지고 심지어 끝나야 합니다.

... 한 가지가 아니라 여러 가지 물리적 문제, 특히 열(너무 많고 소산하기가 너무 어려움), 전력 소비(너무 높음) 및 전류 누출 문제로 인해 더 높은 클럭 속도를 활용하는 것이 점점 더 어려워졌습니다.

... 칩 회사들이 동일한 새로운 멀티코어 방향을 공격적으로 추구함에 따라 Intel과 대부분의 프로세서 공급업체의 미래는 다른 곳에 달려 있습니다.

...멀티코어는 하나의 칩에서 두 개 이상의 실제 CPU를 실행하는 것입니다.

이 기사의 예측은 그대로 유지된 것 같지만 그 이유를 이해하지 못합니다. 나는 하드웨어가 어떻게 작동하는지에 대해 아주 막연한 생각만 가지고 있습니다.

나의 지나치게 단순화된 견해는 "같은 공간에 더 많은 처리 능력을 담는 것이 점점 더 어려워지고 있다"는 것입니다(열, 전력 소비 등의 문제로 인해). 나는 결론이 "그러므로 우리는 더 큰 컴퓨터를 보유하거나 여러 컴퓨터에서 프로그램을 실행해야 할 것입니다"라고 예상합니다. (실제로 분산형 클라우드 컴퓨팅은 우리가 더 많이 듣고 있는 것입니다.)

그러나 솔루션의 일부는 멀티 코어 아키텍처인 것 같습니다. 컴퓨터의 크기가 커지지 않는 한(그렇지 않습니다) 이는 "동일한 공간에 더 많은 강력한 성능을 담는다"는 또 다른 표현인 것 같습니다.

"더 많은 코어 추가"가 "CPU 속도 향상"과 동일한 물리적 제한에 직면하지 않는 이유는 무엇입니까?

가능한 한 가장 간단한 용어로 설명해주세요. :)

답변1

요약

  • 경제학. 더 높은 클럭 속도보다 더 많은 코어를 가진 CPU를 설계하는 것이 더 저렴하고 쉽습니다. 그 이유는 다음과 같습니다.

  • 전력 사용량이 크게 증가합니다. 클럭 속도를 높이면 CPU 전력 소비도 급격히 증가합니다. 클럭 속도를 25% 높이는 데 필요한 열 공간에서 더 낮은 속도로 작동하는 코어 수를 두 배로 늘릴 수 있습니다. 50%의 경우 4배.

  • 순차 처리 속도를 높이는 다른 방법이 있으며, CPU 제조업체는 이를 잘 활용합니다.


나는 훌륭한 답변을 많이 그릴 것입니다.이 질문자매 SE 사이트 중 하나에서. 그러니 가서 찬성하세요!


클럭 속도 제한

클럭 속도에는 몇 가지 알려진 물리적 제한이 있습니다.

  • 전송 시간

    전기 신호가 회로를 통과하는 데 걸리는 시간은 빛의 속도에 의해 제한됩니다. 이는 엄격한 제한이며 이를 해결할 수 있는 알려진 방법이 없습니다 1 . 기가헤르츠 클럭에서는 이 한계에 접근하고 있습니다.

    그러나 우리는 아직 거기에 도달하지 못했습니다. 1GHz는 클럭 틱당 1나노초를 의미합니다. 그 시간 동안 빛은 30cm까지 이동할 수 있다. 10GHz에서 빛은 3cm를 이동할 수 있습니다. 단일 CPU 코어의 너비는 약 5mm이므로 10GHz를 넘으면 이러한 문제가 발생합니다. 2

  • 스위칭 지연

    신호가 한쪽 끝에서 다른 쪽 끝으로 이동하는 데 걸리는 시간을 단순히 고려하는 것만으로는 충분하지 않습니다. 또한 CPU 내의 논리 게이트가 한 상태에서 다른 상태로 전환하는 데 걸리는 시간도 고려해야 합니다. 클럭 속도를 높이면 이것이 문제가 될 수 있습니다.

    안타깝게도 구체적인 내용은 잘 모르겠고 어떤 수치도 제공할 수 없습니다.

    분명히 더 많은 전력을 공급하면 스위칭 속도가 빨라질 수 있지만 이로 인해 전력 소비와 열 방출 문제가 모두 발생합니다. 또한 전력이 더 많다는 것은 손상 없이 처리할 수 있는 더 큰 도관이 필요하다는 것을 의미합니다.

  • 열 방출/전력 소비

    이것이 큰 것입니다. 에서 인용fuzzyhair2의 답변:

    최신 프로세서는 CMOS 기술을 사용하여 제조됩니다. 클록 주기가 있을 때마다 전력이 소모됩니다. 따라서 프로세서 속도가 높을수록 열 방출이 더 많아집니다.

    멋진 측정값이 있습니다.이 AnandTech 포럼 스레드, 그들은 심지어 전력 소비에 대한 공식을 도출했습니다(발열되는 열과 밀접하게 관련됨).

    공식
    신용Idontcare

    이를 다음 그래프로 시각화할 수 있습니다.

    그래프
    신용Idontcare

    보시다시피, 클럭 속도가 특정 지점을 넘어 증가함에 따라 전력 소비(및 생성된 열)가 매우 빠르게 증가합니다. 이로 인해 클럭 속도를 무한정 높이는 것이 비현실적입니다.

    전력 사용량이 급격히 증가하는 이유는 아마도 스위칭 지연과 관련이 있을 것입니다. 단순히 클럭 속도에 비례하여 전력을 늘리는 것만으로는 충분하지 않습니다. 더 높은 클럭에서 안정성을 유지하려면 전압도 높여야 합니다. 이것은 완전히 정확하지 않을 수도 있습니다. 댓글에서 수정 사항을 지적하거나 이 답변을 수정하세요.


코어가 더 많나요?

그렇다면 왜 더 많은 코어가 필요한가요? 글쎄, 나는 그것에 대해 확실히 대답할 수 없다. Intel과 AMD의 사람들에게 물어봐야 할 것입니다. 그러나 위에서 볼 수 있듯이 최신 CPU에서는 어느 시점에서는 클럭 속도를 높이는 것이 비현실적입니다.

예, 멀티코어는 필요한 전력과 열 방출도 증가시킵니다. 그러나 전송 시간과 전환 지연 문제를 깔끔하게 방지합니다. 그리고 그래프에서 볼 수 있듯이 클럭 속도가 25% 증가하면 동일한 열 오버헤드로 최신 CPU의 코어 수를 쉽게 두 배로 늘릴 수 있습니다.

어떤 사람들은 그것을 했습니다 - 현재오버클럭 세계 기록9GHz가 조금 부끄럽습니다. 그러나 허용 가능한 범위 내에서 전력 소비를 유지하면서 그렇게 하는 것은 중요한 엔지니어링 과제입니다. 어느 시점에서 설계자는 더 많은 작업을 수행하기 위해 더 많은 코어를 추가하기로 결정했습니다.병행하여대부분의 경우 성능을 더욱 효과적으로 향상시킬 수 있습니다.

이것이 바로 경제성이 필요한 부분입니다. 멀티코어 경로를 선택하는 것이 더 저렴할 가능성이 높습니다(설계 시간 단축, 제조 복잡성 감소). 그리고 시장에 내놓는 것도 쉽습니다. 누가 새 제품을 좋아하지 않겠습니까?옥타 코어칩? (물론 우리는 소프트웨어가 멀티코어를 활용하지 않으면 멀티코어가 꽤 쓸모없다는 것을 알고 있습니다...)

거기~이다멀티코어의 단점: 추가 코어를 배치하려면 더 많은 물리적 공간이 필요합니다. 그러나 CPU 프로세스 크기는 지속적으로 많이 줄어들기 때문에 이전 디자인의 복사본 두 개를 넣을 공간이 충분합니다. 실제 절충점은 더 크고 복잡한 단일 코어를 만들 수 없다는 것입니다. 그렇다면 다시 핵심 복잡성이 증가하는 것은나쁜 것디자인 관점에서 볼 때 - 복잡성이 높아질수록 실수/버그 및 제조 오류가 많아집니다. 우리는 너무 많은 공간을 차지하지 않을 만큼 단순하고 효율적인 코어를 갖춘 행복한 매체를 찾은 것 같습니다.

현재 프로세스 크기에서 단일 다이에 장착할 수 있는 코어 수는 이미 한계에 도달했습니다. 곧 규모를 축소할 수 있는 한계에 도달할 수도 있습니다. 그럼 다음은 무엇입니까? 더 필요합니까? 불행히도 대답하기가 어렵습니다. 여기 천리안 있는 사람 있나요?


성능을 향상시키는 다른 방법

따라서 클럭 속도를 높일 수 없습니다. 그리고 더 많은 코어에는 추가적인 단점이 있습니다. 즉, 코어에서 실행되는 소프트웨어가 이를 활용할 수 있는 경우에만 도움이 된다는 것입니다.

그럼 우리가 또 무엇을 할 수 있나요? 최신 CPU는 동일한 클럭 속도에서 구형 CPU보다 어떻게 훨씬 더 빠릅니까?

클럭 속도는 실제로 CPU 내부 작동의 대략적인 근사치일 뿐입니다. CPU의 모든 구성 요소가 해당 속도로 작동하는 것은 아닙니다. 일부는 2틱마다 한 번씩 작동할 수도 있습니다.

더 중요한 것은 숫자입니다.지침단위 시간당 실행할 수 있습니다. 이는 단일 CPU 코어가 얼마나 많은 작업을 수행할 수 있는지를 훨씬 더 잘 측정한 것입니다. 몇 가지 지침; 일부는 한 클럭 사이클이 걸리고 일부는 3개가 걸립니다. 예를 들어, 나눗셈은 덧셈보다 상당히 느립니다.

따라서 초당 실행할 수 있는 명령 수를 늘려 CPU 성능을 향상시킬 수 있습니다. 어떻게? 글쎄, 당신은 명령을 더 효율적으로 만들 수 있습니다. 아마도 나누기는 이제 두 사이클만 걸릴 수도 있습니다. 그럼 거기에명령 파이프라인. 각 명령어를 여러 단계로 나누면 명령어를 "병렬로" 실행할 수 있습니다. 그러나 각 명령어는 여전히 전후 명령어에 대해 잘 정의된 순차적 순서를 가지므로 멀티코어와 같은 소프트웨어 지원이 필요하지 않습니다. 하다.

있다또 다른방법: 더 전문적인 지침. 우리는 한 번에 많은 양의 데이터를 처리하기 위한 지침을 제공하는 SSE와 같은 것을 보았습니다. 유사한 목표를 가지고 지속적으로 도입되는 새로운 명령어 세트가 있습니다. 이는 다시 소프트웨어 지원이 필요하고 하드웨어의 복잡성을 증가시키지만 뛰어난 성능 향상을 제공합니다. 최근에는 소프트웨어로 구현된 수많은 연산보다 훨씬 빠른 하드웨어 가속 AES 암호화 및 암호 해독을 제공하는 AES-NI가 있었습니다.


1 어쨌든 이론적인 양자 물리학에 깊이 들어가지 않고서는 불가능합니다.

2 전기장의 전파는 진공에서 빛의 속도만큼 빠르지 않기 때문에 실제로는 더 낮을 수도 있습니다. 또한 이는 직선 거리에 대한 것입니다. 직선보다 상당히 긴 경로가 하나 이상 있을 수 있습니다.

답변2

물리학은 물리학이다. 우리는 영원히 더 작은 공간에 더 많은 트랜지스터를 넣을 수는 없습니다. 어떤 시점에서는 너무 작아져서 이상한 양자 쓰레기를 처리하게 됩니다. 어떤 시점에서는 우리는 짐을 꾸릴 수 없습니다두 배1년에 우리가 예전처럼 많은 수의 트랜지스터를 만들 수 있다는 것입니다(이것이 바로 무어의 법칙에 관한 것입니다).

원시 클럭 속도는 아무 의미가 없습니다. 나의 오래된 Pentium M은 현대 데스크탑 CPU의 클럭 속도의 절반 정도였습니다.더 빠르게) – 그리고 현대 시스템은간신히10년 전 시스템의 속도에 접근하고 있으며 확실히 더 빠릅니다. 기본적으로 클럭 속도를 '단지' 높이는 것만으로는 많은 경우 실제 성능 향상을 얻을 수 없습니다. 도움이 될 수 있습니다.일부단일 스레드 작업을 수행하지만 다른 모든 측면에서 더 나은 효율성을 위해 설계 예산을 지출하는 것이 좋습니다.

다중 코어를 사용하면 다음을 수행할 수 있습니다. 한 번에 여러 가지 작업을 수행할 수 있으므로 다음 작업을 위해 한 작업이 완료될 때까지 기다릴 필요가 없습니다. 단기적으로는 두 개의 기존 코어를 동일한 패키지에 간단히 넣을 수 있습니다(예:펜티엄 Ds 및 MCM(과도기적 설계)을 사용하여 두 배 빠른 시스템을 갖게 되었습니다. 물론 대부분의 최신 구현은 메모리 컨트롤러와 같은 것을 공유합니다.

다양한 방법으로 더욱 스마트하게 구축할 수도 있습니다. ARM은 Big-Little을 수행합니다. 4개의 '약한' 저전력 코어가 4개의 더 강력한 코어와 함께 작동하므로 두 가지 장점을 모두 누릴 수 있습니다. Intel에서는 스로틀을 낮추거나(더 나은 전력 효율성을 위해) 오버클럭할 수 있습니다.특정한코어(더 나은 단일 스레드 성능을 위해) AMD가 모듈로 뭔가를 했던 것으로 기억합니다.

또한 메모리 컨트롤러(대기 시간이 짧음), IO 관련 기능(최신 CPU에는 노스 브리지가 없음), 비디오(노트북 및 AIW 설계에서 더 중요함) 등을 이동할 수도 있습니다. 클럭 속도를 '계속' 높이는 것보다 이러한 작업을 수행하는 것이 더 합리적입니다.

어떤 시점에서는 '더 많은' 코어가 작동하지 않을 수 있습니다.수백코어의.

멀티코어를 사용하면 컴퓨터가 작동할 수 있습니다.더 똑똑하게이 모든 방법으로.

답변3

간단한 대답

질문에 대한 가장 간단한 대답

"더 많은 코어 추가"가 "CPU 속도 향상"과 동일한 물리적 제한에 직면하지 않는 이유는 무엇입니까?

실제로 질문의 다른 부분에서 발견됩니다.

나는 결론이 "그러므로 우리는 더 큰 컴퓨터를 보유하거나 여러 컴퓨터에서 프로그램을 실행해야 할 것입니다"라고 예상합니다.

본질적으로 다중 코어는 동일한 장치에 여러 "컴퓨터"를 갖는 것과 같습니다.

복잡한 답변

"코어"는 실제로 명령(덧셈, 곱셈, "and" 등)을 처리하는 컴퓨터의 일부입니다. 코어는 한 번에 하나의 명령만 실행할 수 있습니다. 컴퓨터를 "더 강력하게" 만들고 싶다면 다음과 같은 두 가지 기본 작업을 수행할 수 있습니다.

  1. 처리량 증가(클럭 속도 증가, 물리적 크기 감소 등)
  2. 동일한 컴퓨터에서 더 많은 코어 사용

#1의 물리적 제한은 주로 회로의 전자 속도와 처리로 인해 발생하는 열을 배출해야 한다는 점입니다. 해당 트랜지스터 중 일부를 별도의 코어로 분리하면 열 문제가 크게 완화됩니다.

#2에는 중요한 제한 사항이 있습니다. 문제를 여러 개로 나눌 수 있어야 합니다.독립적인문제를 낸 다음 답을 결합하세요. 최신 개인용 컴퓨터에서는 어쨌든 코어와의 계산 시간을 놓고 경쟁하는 수많은 독립적인 문제가 있기 때문에 이는 실제로 문제가 되지 않습니다. 그러나 집중적인 계산 문제를 수행할 때 다중 코어는 문제가 동시성을 감당할 수 있는 경우에만 실제로 도움이 됩니다.

답변4

간단히 말해서: 단일 코어 속도를 높이는 것이 한계에 도달했습니다. 따라서 한계에 도달하거나 더 나은 재료로 변경할 수 있을 때까지(또는 다음과 같은 기존 기술을 뒤집는 근본적인 혁신을 달성할 수 있을 때까지) 계속해서 코어를 축소하고 더 ​​추가합니다. 집 크기의 실제로 작동하는 양자 컴퓨팅).

나는 이 문제가 다차원적이라고 생각하며 더 완전한 그림을 그리려면 약간의 글을 써야 할 것입니다.

  1. 물리적 한계(실제 물리학에 의해 부과됨): 빛의 속도, 양자 역학 등.
  2. 제조 문제: 필요한 정밀도로 더 작은 구조물을 어떻게 제조합니까? 원자재 관련 문제, 회로 제작에 사용되는 재료, 내구성.
  3. 아키텍처 문제: 열, 추론, 전력 소비 등
  4. 경제적 문제: 사용자에게 더 많은 성능을 제공하는 가장 저렴한 방법은 무엇입니까?
  5. 성능에 대한 사용 사례 및 사용자 인식.

더 많은 것이 있을 수 있습니다. 다목적 CPU는 이러한 모든 요소(및 그 이상)를 시장 주제의 93%에 맞는 하나의 대량 생산 가능한 칩으로 뒤섞는 솔루션을 찾으려고 노력하고 있습니다. 보시다시피 마지막 포인트는 가장 중요한 고객 인식입니다. 이는 고객이 CPU를 사용하는 방식에서 직접적으로 파생됩니다.

평소 애플리케이션이 무엇인지 스스로에게 물어보십시오. 어쩌면: 25개의 Firefox 탭, 각각 백그라운드에서 일부 광고를 재생하는 동안 음악을 들으면서 약 2시간 전에 시작한 빌드 작업이 완료되기를 기다리는 동안 모두 가능합니다. 해야 할 일이 많지만 여전히 원활한 경험을 원합니다. 하지만 CPU는 한 번에 하나의 작업을 처리할 수 있습니다! 한 가지에 대해서. 그래서 당신이 하는 일은 일을 나누어서 긴 줄을 만들고 모든 사람이 자신의 몫을 얻고 모두가 행복해지는 것입니다. 당신을 제외하고는 모든 것이 느리고 전혀 원활하지 않기 때문입니다.

따라서 동일한 시간에 더 많은 작업을 수행하기 위해 CPU 속도를 높입니다. 하지만 말씀하신 대로 열과 전력 소비가 발생합니다. 그리고 그것이 우리가 원자재 부분에 도달하는 곳입니다. 실리콘은 뜨거워질수록 전도성이 높아지는데, 이는 가열할 때 재료를 통해 더 많은 전류가 흐른다는 의미입니다. 트랜지스터는 더 빠르게 전환할수록 전력 소비가 더 높아집니다. 또한 높은 주파수는 짧은 와이어 사이의 누화를 더욱 악화시킵니다. 보시다시피 속도를 높이는 접근 방식은 "멜트다운"으로 이어질 것입니다. 실리콘보다 더 나은 원자재나 훨씬 더 나은 트랜지스터가 없는 한, 우리는 단일 코어 속도에 머물고 있습니다.

이를 통해 우리가 시작한 곳으로 돌아갑니다. 동시에 작업을 완료합니다. 다른 코어를 추가해 보겠습니다. 이제 우리는 실제로 한 번에 두 가지 일을 할 수 있습니다. 이제 상황을 좀 진정시키고 작업을 두 개의 덜 강력하지만 더 기능적인 코어로 분할할 수 있는 소프트웨어를 작성해 보겠습니다. 이 접근 방식에는 두 가지 주요 문제가 있습니다(소프트웨어 세계가 이에 적응하는 데 시간이 필요하다는 점 외에도). 1. 칩을 더 크게 만들거나 개별 코어를 더 작게 만듭니다. 2. 일부 작업은 동시에 실행되는 두 부분으로 분할될 수 없습니다. 코어를 줄일 수 있는 한 계속해서 코어를 추가하거나 칩을 더 크게 만들어 열 문제를 방지하세요. 아, 그리고 고객을 잊지 말자. 사용 사례를 변경하면 업계도 이에 적응해야 합니다. 모바일 부문이 생각해낸 반짝이는 "새로운" 것들을 모두 살펴보세요. 그렇기 때문에 모바일 부문이 매우 중요하다고 간주되고 모두가 손을 잡고 싶어합니다.

그렇습니다. 이 전략은 한계에 도달할 것입니다! 그리고 인텔은 이를 알고 있기 때문에 미래는 다른 곳에 있다고 말하는 것입니다. 그러나 그들은 그것이 저렴하고 효과적이며 실행 가능한 한 계속해서 그렇게 할 것입니다.

마지막으로 중요한 것은 물리학입니다. 양자 역학은 칩 축소를 제한합니다. 빛의 속도는 아직 제한이 없습니다. 실리콘에서는 전자가 빛의 속도로 이동할 수 없기 때문에 실제로는 그보다 훨씬 느립니다. 또한 재료가 제공하는 속도에 하드캡을 적용하는 것은 충격 속도입니다. 소리가 공기 중에서보다 물 속에서 더 빨리 전달되는 것처럼, 전기 충격은 예를 들어 실리콘보다 그래핀에서 더 빠르게 전달됩니다. 이는 다시 원자재로 이어집니다. 그래핀은 전기적 특성 면에서 훌륭합니다. CPU를 만드는 데 훨씬 더 좋은 재료가 될 것이지만, 안타깝게도 대량 생산이 매우 어렵습니다.

관련 정보