인텔은 그냥 발표는 새로운 48core CPU.무엇을 할 것이 이동하여 코어를 많이 사실은 우리에게 프로그래머?[마감]

StackOverflow https://stackoverflow.com/questions/1838458

문제

인텔은 단지 공개했습니다 48core Cpu ("인텔 보 48-core86 로 프로세서는 단일 칩 클라우드 컴퓨터", 저자 라이언 Shrout,December2,2009;칩 "단 하나 칩 클라우드 컴퓨터" 으로도 알려진 방갈로르).보다 더 코어의 수를,이는 새로운 건축인을 소개하는 많은 흥미로운 기능과 같은 이 중 하나:

흥미로운 여기에는 인텔은 말하고 있는 그들은 제거 하드웨어 캐시 일관성을 효과적으로 각각의 의미"타일은"완전히 분리하는 무슨을에서 매장에서 현지 L2 캐시입니다.모든 캐시 사이의 통신을 코어 및 타일 것입니다 따라서 처리하여 메시 데이터 통신 시스템에 전용"메시지 버퍼에"각각의 타일이 있습니다.

무엇이 이러한 새로운 아키텍처를 의미 우리를 위해 프로그래머?우리는 어떻게 해결의 복잡성일의 Cpu?

도움이 되었습니까?

해결책

각 "타일"이 현지 L2 캐시에 저장되는 내용이 완전히 분리된다는 것을 의미하는 제거 된 하드웨어 캐시 일관성.

이는 아마도 커플 링 시스템이 적은 프로그램을 갖춘 프로그램이 대부분 독립적 인 작업을 수행하는 프로그램에 각각 고유 한 프로세서와 캐시를 가지므로 캐시 히트의 속도가 높고 개별 성능이 향상 될 것입니다. 병목 현상은 이러한 모듈 간의 통신으로 전환되므로 대부분의 프로그래머가 아키텍처로부터 실질적인 혜택을 얻기 위해서는 효율적인 저수준 도구가이를 최적화하기 위해 특별히 작성해야 할 것입니다.

프로그래밍은 커플 링이 매우 낮은 모듈 작성에 중점을 두어 기능을 노출시키고 서비스로 제공 할 것입니다. 컴파일러는 확장 가능한 프로세서 아키텍처를 알게되므로 프로세서에서 각각 동일한 모듈의 여러 사본을 실행하는 프로세서에서 모듈 중복성을 가질 수있는 가능성과 함께 이러한 모듈을 각각 자체 프로세서에 할당하는 것을 "알 수 있습니다. 각 모듈이 보유한 시간 단위 당 요청 수로 확장하기 위해 이러한 복제의 동적 수.

따라서 기본적으로로드 밸런싱은 데스크탑의 옵션이 될 것입니다. 특히 많은 프로세스에서 동시에 자주 호출 해야하는 핵심 OS 기능의 경우 커널의 중복 사본이 더 많은 프로세스를 보장합니다. OS를 기다릴 필요없이 동시에 더 많은 작업을 수행합니다.

또한 가상화는 컴파일러 내에 통합되어 거래의 도구가 될 것입니다. 다른 플랫폼에 대해 기본적으로 작성된 코드는 다른 프로세서에서 다른 비트가 실행되며 통신 아키텍처가이를 완벽하게 통합하기 때문에 동일한 프로그램 단위 내에서 협력 할 수 있습니다. 동일한 응용 프로그램의 다른 부분은 별도로 컴파일되고 서비스로 배포되므로 다른 프로그래밍 언어로 작성됩니다.

다른 팁

그것은 우리 모두가 Erlang 또는 동시성을 위해 설계된 다른 기능적 언어를 배우고 있어야한다는 것을 의미합니다.

Mutxes 및 기타 기술을 사용하여 여러 스레드의 생성 및 상호 작용을 수동으로 조정하여 동시성을위한 프로그래밍은 OO를 기본적으로 지원하지 않는 언어로 OO 디자인을 시도하는 것만 큼 번거롭고 오류가 발생합니다. 불변의 데이터와 기능적 프로그래밍 스타일은 자연스럽게 동시성에 적합합니다 (동시성을 위해 특별히 설계된 수많은 기능 언어에 의해 입증됨). 프로세서 성능이 병렬주의 개선을 통해 확장됨에 따라 시계 속도보다 더 많은 개발자가 기능적 언어를 향해 점점 더 기능적 언어가 우세 할 때까지 처리 능력을 활용할 것이라고 생각합니다.

48 Core CPU에는 메시징 하드웨어 및 Mutex 하드웨어가 있어야합니다.

허브 셔터는 몇 가지를 발행했습니다 효과적인 동시성에 관한 기사.

소개로서 그의 훌륭한 기사를 읽을 수 있습니다 "소프트웨어의 동시성을 향한 근본적인 전환".

이상적인 상황은 프로그래머의 90%에게 전혀 의미가 없다는 것입니다.

거의 모든 것과 마찬가지로, 우리는 일반적인 프로그래머로부터 멀티 태스킹의 복잡성을 숨기는 하나 또는 여러 프로그래밍 언어로 지원되는 프로그래밍 패러다임이 있어야합니다. 스레드가있는 것을 프로그래밍하는 것은 매우 어렵습니다. 20 O 30을 사용하여 프로그램이 CPU를 실제로 사용하도록 해야하는 경우 더 많은 것이 어렵습니다.

Parallels Extensions와 같은 몇 가지 제안이 있습니다. Microsoft Axum 또는 Erlang 우선, 특히 Erlang은 수년에 걸쳐 성공의 긴 이야기를 가지고 있습니다.

우리는 아마을 연기 할 필요가 우리의 유토피아를 꿈의 마법의 컴파일러는 병렬화하여 코드에 당신을 그것에 대해 생각합니다.

Larrabee에 대해 말하는 것처럼 인용문이 들리나요? 이러한 종류의 아키텍처에서는 프로세싱 코어가 더 단순하고 컴파일러가 현재 생성하는 코드를 실행하는 느리기 때문에 멀티 코어를 무시할 수 없습니다. 특히 지침을 주문하기 때문에 (다이 크기를 저장하고 결과를 저장하는 경우가 있습니다. 더 간단한 코어).

일반적으로 멀티 코어는 서버에 적합하며 일반적인 서버 코드 스케일은 수정없이 양호합니다.

데스크탑에서 대부분의 단일 스레드 코드는 현재 세대에 적합합니다. 프로그램이 컴퓨팅 비용이 비싸면 개발자는 여러 코어에 작업을 쉽게 오프로드 할 수 있습니다.

그러나 많은 핵심 시스템은 데스크탑 사용에 적합하지 않다고 생각합니다. 응용 프로그램이 최적화되면 새로운 종류의 지연이 도입되어 응용 프로그램에서 눈에 띄는 UI 지연이 발생할 수 있습니다. 사용자의 경우 반응이 덜 느껴질 수 있으며, 이는 "느린"것으로 인식됩니다! 개발자가 워크로드를 작은 패킷으로 슬라이스하고 작업 대기열에서 대기열을 대기하고 신호를 보내 처리를 시작할 때이 원인의 원인은 훨씬 더 많은 스케줄링 작업이 될 것입니다.

이 IMHO는 메시지 전달 기반 코드 (Erlang & Co.)에도 적용됩니다. 비록 지연이 잠금 및 신호 기반 코드보다 짧지 만 요약합니다.

아마도 이것은 일부 세대의 많은 핵심 데스크톱 아키텍처 후에 해결 될 것입니다. 그러나, 시작은 지연 될 것입니다. 시스템은 대부분의 시간이 느려질 것입니다.

우리는 작은 문제를 해결하지만 함께 묶인 많은 작은 작업을해야합니다. 매우 유닉스처럼 들립니다

큰 모 놀리 식 순차 코드는 점점 더 많은 경멸이 될 것입니다.

보도 자료에 따르면 인텔은 2010 년에 인텔이 최대 6 개 및 8 코어 CPU를 얻을 것이라고 보도했다. 48 코어 칩은 몇 년 동안 생산을 치르지 않을 것이라고 보도했다.

어쨌든, 나는 몇 년 동안이 "수십 개의 코어"를 듣고 있습니다. 산업으로서 우리는 단일 스레드 순차적 코드가 올바르게 작동하는 데 충분한 어려움이 있습니다. Firefox가 충돌하거나 IE가 올바르게 렌더링 할 수 없으면 상황에 더 많은 코어를 추가하면 비트에 도움이되지 않는다는 것을 알고 있습니다. 직장에서 나는 4 코어 상자를 가지고 있으며 이미 내 소프트웨어가 사용할 수있는 것보다 더 많은 코어입니다. 당신이 게이머 나 HPC 또는 클라우드 호스팅을하지 않는 한, 아마도 CPU에 대한 시간이 많이 걸리지 않을 것입니다.

일반적인 시스템을 보면 병목 현상이 사용자 상호 작용에 있습니다. 그렇다면 왜 모든 에너지를 최적화하는 데 사용하지 않습니까? 나는 그들이 칩 회사이기 때문에, 더 빠른 CPU를 만드는 것은 그들이 아무리 아닐이 아닌지에 관계없이 모든 것을 치는 데 사용하는 망치라고 생각합니다.

실험 설계에 대한 보도 자료입니다. 페라리는 새로운 10L 18 기통 엔진에 대해 자랑하는 것과 같습니다. 시원하게 들리며 더 많은 거리 페라리를 판매 할 수 있지만 우리의 99.999%는 실제로 130mph에서 운전하는 것에 대해 걱정할 필요가 없습니다.

게이머 나 HPC 또는 클라우드 호스팅을하지 않는 한 ...

그러나 많은 사람들이 게이머이며, 세계의 대부분의 처리 능력은 메인 프레임, 처리, 데이터베이스 및 예, 클라우드 호스팅에 위치하고 있습니다 ... HPC SuperComputers는 또한 대규모 병렬 컴퓨팅을 위해 병렬 프로세서 클러스터를 사용하여 구성됩니다.

아무도 가정용 컴퓨터 제조업체가 홈 데스크톱에 넣기 시작할 것을 기대하지 않습니다. 그러나 Neccessary Software가 주어지면 시간을 요청하는 대신 로컬 워크 스테이션에서 작업의 근사/미리보기를 볼 수 있도록 관리자, 과학자, CGI 아티스트 및 마운드의 수명을 완화합니다. University Comp Center 또는 Render Farm에서. 그리고 관리자는 걱정할 상자가 적을 것입니다.

나는 프로그래머들에게 어떤 의미가 있는지에 대한 통찰력을 제공 할 수 있기를 바랍니다. 그러나 나는 여전히 Java에서 멀티 스레딩을 마스터해야합니다. 제가 말할 수있는 것은 48 코어를 위해 수동으로하는 것이 두통이 될 것입니다. 컴파일러가 충분히 스마트 한 경우 재귀 알고리즘이 효과적으로 사용할 수 있습니다. Java에 대해서는 확실하지 않지만 Python에서 재귀 알고리즘을 마지막으로 시도했을 때 하나의 코어 만 사용했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top