CPU가 일반적으로 하나의 버스에만 연결되는 이유는 무엇입니까?


24

여기에서 마더 보드 아키텍처를 찾았습니다.

여기에 이미지 설명을 입력하십시오

이것은 마더 보드의 일반적인 레이아웃으로 보입니다. 편집 : 글쎄, 분명히 더 이상 전형적인 것은 아닙니다.

CPU가 1 개의 버스에만 연결되는 이유는 무엇 입니까? 이 전면 버스는 큰 병목 현상처럼 보입니다. 2 개 또는 3 개의 버스를 CPU에 직접 연결하는 것이 좋지 않습니까?

RAM 용 버스 하나, 그래픽 카드 용 버스 하나, 하드 드라이브, USB 포트 및 기타 모든 것에 대한 일종의 브리지 용 버스를 상상합니다. 내가 이런 식으로 나눈 이유는 하드 드라이브 데이터 속도가 메모리에 비해 느리기 때문입니다.

이런 식으로하는 것이 매우 어려운 일입니까? 기존 다이어그램에 이미 7 개 이상의 버스 가 있기 때문에 비용이 어떻게 들어올 수 있는지 알 수 없습니다. 실제로, 더 많은 직접 버스를 사용함으로써 총 버스 수와 브리지 중 하나를 줄일 수 있습니다.

그래서 이것에 문제가 있습니까? 어딘가에 큰 단점이 있습니까? 내가 생각할 수있는 유일한 것은 아마도 CPU와 커널의 복잡성 일 것입니다.이 병목 현상 버스 아키텍처는 예전보다 덜 복잡하고 표준화를 위해 디자인이 동일하게 유지되는 방식이라고 생각합니다.

편집 : 나는 Watchdog Monitor 를 언급 하는 것을 잊었다 . 일부 다이어그램에서 본 것을 알고 있습니다. 병목 현상 버스로 인해 워치 독이 모든 것을보다 쉽게 ​​모니터링 할 수 있습니다. 그것과 관련이있을 수 있습니까?


9
그것은 매우 오래된 접근법입니다. 오늘날 CPU에는 루트 콤플렉스 및 메모리 컨트롤러가 내장되어 있으므로 PCIe 장치, RAM 및 실제로 사우스 브리지에 직접 연결됩니다. 예를 들어
톰 카펜터

@TomCarpenter 그래, 더 좋아 보이기 시작했다. 내가 게시 한 다이어그램은 학교를 포함하여 "모든 곳"에서 본 것이므로 더 일반적이라고 생각했습니다.
DrZ214

7
위의 다이어그램은 여전히 ​​관련이 있습니다. 요즘은 마더 보드의 다이어그램이 아니라 CPU 자체입니다. "CPU"를 "core"로 바꾸고 "chipset"을 "CPU"로 바꾸십시오.
slebetman

답변:


43

당신이 보여주는 접근 방식은 마더 보드를위한 아주 오래된 토폴로지입니다. PCIe보다 이전에는 실제로 00 년대 어딘가에 되돌려 놓았습니다. 그 이유는 주로 통합의 어려움 때문입니다.

기본적으로 15 년 전, 모든 것을 단일 다이에 통합하는 기술은 상업적 관점에서 실제로 존재하지 않았으며, 그렇게하는 것은 매우 어려웠습니다. 모든 것을 통합하면 실리콘 다이 크기가 매우 커져 수율이 훨씬 낮아집니다. 수율은 본질적으로 결함으로 인해 웨이퍼에서 손실되는 다이 수입니다. 다이가 클수록 결함 확률이 높습니다.

이 문제를 해결하기 위해 단순히 디자인을 여러 칩으로 나눕니다. 마더 보드의 경우 결국 CPU, 노스 브리지 및 사우스 브리지입니다. CPU는 고속 상호 연결을 갖춘 프로세서로만 제한됩니다 (내가 리콜하는 한 전면 버스라고 함). 그런 다음 메모리 컨트롤러, 그래픽 연결 (예 : AGP, 컴퓨팅 용어의 고대 기술) 및 사우스 브리지로의 느린 링크를 통합 한 노스 브리지가 있습니다. 사우스 브리지는 확장 카드, 하드 드라이브, CD 드라이브, 오디오 등을 처리하는 데 사용되었습니다.


지난 20 년 동안 신뢰성이 높고 더 작은 공정 노드에서 반도체를 제조 할 수있는 능력은 모든 것을 단일 칩에 통합하는 것이 가능하다는 것을 의미합니다. 트랜지스터가 작을수록 밀도가 높아져 더 잘 맞을 수 있으며 제조 공정이 개선되면 수율이 높아집니다. 실제로 더 비용 효율적일뿐만 아니라 최신 컴퓨터의 속도 향상을 유지하는 것이 중요해졌습니다.

올바르게 지적했듯이 북쪽 교량에 하나의 상호 연결이 있으면 병목 현상이 발생합니다. PCIe Root Complex 및 시스템 메모리 컨트롤러를 포함하여 모든 것을 CPU에 통합 할 수 있다면 그래픽과 컴퓨팅을위한 주요 장치간에 갑자기 고속 링크가 생길 수 있습니다. 다이는 Tbps 정도의 속도를 달성 할 수 있습니다!

이 새로운 토폴로지는이 다이어그램에 반영됩니다.

새로운 토폴로지

이미지 소스

이 경우 그래픽과 메모리 컨트롤러가 모두 CPU 다이에 통합되어 있습니다. 노스 브리지와 사우스 브리지의 일부 비트로 구성된 단일 칩셋 (다이어그램의 칩셋)에 대한 하나의 링크가 여전히 존재하지만, 오늘날에는 매우 빠른 상호 연결 (100 + Gbps)이 있습니다. 다이보다 여전히 느리지 만 이전 전면 버스보다 훨씬 빠릅니다.

왜 모든 것을 절대적으로 통합하지 않는가? 잘 마더 보드 제조업체는 PCIe 슬롯 수, SATA 연결 수, 오디오 컨트롤러 등 사용자 지정 기능을 여전히 원합니다.

실제로 일부 모바일 프로세서는 CPU 다이에 훨씬 더 통합되어 있습니다. ARM 프로세서 변형을 사용하는 단일 보드 컴퓨터를 생각하십시오. 이 경우 ARM이 CPU 설계를 임대하기 때문에 제조업체는 원하는대로 컨트롤러 / 인터페이스를 적합하게 통합하여 다이를 사용자 정의 할 수 있습니다.


+1, 당신은 저를 이겼습니다 :) 좋은 답변, 특히 건축 디자인의 역사적인 이유 때문에.
uint128_t

감사합니다. 특히 두 번째 단락이 집에 도착했습니다. 그러나 on the die you can achieve speeds on the order of Tbps!Yikes는 CPU의 CPU 처리 능력을 충분히 능가하기 시작하지 않았습니까?
DrZ214

3
@ DrZ214 이들은 PCI가 아니며 병렬 버스가 아닌 직렬 버스 인 PCIe입니다. PCIe는 양방향에서 레인 당 2.5Gbps, 5Gpbs 또는 8Gbps (전이중)입니다. 16 레인이 가장 넓으며 일반적으로 양방향에서 이론상 최대 128Gbps를 제공합니다. 그리고 그렇습니다. 프로세서 속도에 대한 위의 의견은 의도적으로 지나치게 단순했지만 비현실적이지는 않았습니다 .CPU와 관련이 없었습니다. 현재 315Gbps에서 데이터를 처리하는 순간 FPGA 디자인을 연구 중이며 가능한 최대 성능에 미치지 못했습니다. FPGA의 한계는 데이터 부족입니다!
Tom Carpenter

1
흥미로운 점은 이것이 메모리와 스토리지 버스 등이 CPU로 직접 이동 한 구형 시스템의 아키텍처로 되돌아 간 것입니다.
Chris H

1
@ DrZ214 "레인"은 단일 비트 폭, 클록 / 데이터 신호가 두 쌍으로 전송됩니다. 예를 들어 DDR 버스와 비교할 때 PCIe의 고유 한 점은 PCIe가 레인을 자유롭게 집계 및 분리 할 수있는 반면, 대부분의 버스는 전부 또는 전혀 가져 가지 않아도된다는 것입니다.
pjc50

9

컴퓨터 아키텍처 전문가라고 말할 수는 없지만 질문에 대한 답변을 드리겠습니다.

이것은 마더 보드의 일반적인 레이아웃으로 보입니다.

Tom이 언급했듯이 이것은 더 이상 사실이 아닙니다. 대부분의 최신 CPU에는 노스 브리지가 통합되어 있습니다. 사우스 브리지는 일반적으로 새로운 아키텍처에 의해 통합되거나 불필요합니다. 인텔의 칩셋은 DMI 버스를 통해 CPU와 직접 통신하는 플랫폼 컨트롤러 허브로 사우스 브리지를 "대체"합니다.

CPU가 1 개의 버스에만 연결되는 이유는 무엇입니까? 이 전면 버스는 큰 병목 현상처럼 보입니다. 2 개 또는 3 개의 버스를 CPU에 직접 연결하는 것이 좋지 않습니까?

넓은 (64 비트) 버스는 비싸며 많은 수의 버스 트랜시버와 많은 I / O 핀이 필요합니다. 비명을 지르는 고속 버스가 필요한 유일한 장치 는 그래픽 카드와 RAM입니다. 다른 모든 것 (SATA, PCI, USB, 직렬 등)은 비교적 느리고 지속적으로 액세스되지 않습니다. 따라서 위의 아키텍처에서 모든 "느린"주변 장치가 사우스 브리지를 통해 단일 버스 장치로 묶여있는 이유는 무엇입니까? 프로세서는 모든 작은 버스 트랜잭션을 중재 할 필요가 없으므로 모든 느리고 빈번한 버스 트랜잭션을 집계 할 수 있습니다. 사우스 브리지에서 관리하며 훨씬 느긋한 속도로 다른 주변기기와 연결됩니다.

이제 위에서 SATA / PCI / USB / serial이 "느리게"말해 졌을 때, 이는 주로 역사적 요점이며 오늘날에는 덜 사실이된다는 것을 언급하는 것이 중요합니다. USB 3.0, Thunderbolt 및 10G 이더넷 (곧)뿐만 아니라 가시 디스크 및 고속 PCIe 주변 장치에 SSD를 채택함에 따라 "느린"주변 대역폭이 빠르게 중요 해지고 있습니다. 과거에 노스 브릿지와 사우스 브릿지 사이의 버스는 병목이 많지 않았지만 이제는 더 이상 사실이 아닙니다. 예, 아키텍처는 CPU에 직접 연결된 더 많은 버스로 이동하고 있습니다.

이런 식으로하는 것이 매우 어려운 일입니까? 기존 다이어그램에 이미 7 개 이상의 버스가 있기 때문에 비용이 어떻게 들어올 수 있는지 알 수 없습니다.

프로세서가 더 많은 버스를 관리하고 더 많은 프로세서 실리콘이 버스를 처리 할 수 ​​있습니다. 비싸다. 위의 다이어그램에서 모든 버스가 동일하지는 않습니다. FSB가 빠르게 비명을 지르고 있지만 LPC는 그렇지 않습니다. 고속 버스는 빠른 실리콘을 필요로하고 저속 버스는 필요하지 않으므로 CPU에서 다른 칩으로 느린 버스를 이동할 수 있으면 인생이 더 쉬워집니다.

그러나 위에서 언급했듯이 고 대역폭 디바이스의 인기가 높아짐에 따라 점점 더 많은 버스가 프로세서, 특히 SoC /보다 고도로 통합 된 아키텍처에서 프로세서에 직접 연결됩니다. CPU 다이에 점점 더 많은 컨트롤러를 배치함으로써 매우 높은 대역폭을 쉽게 얻을 수 있습니다.

편집 : 나는 감시 모니터를 언급하는 것을 잊었다. 일부 다이어그램에서 본 것을 알고 있습니다. 병목 현상 버스로 인해 워치 독이 모든 것을 쉽게 모니터링 할 수 있습니다. 그것과 관련이있을 수 있습니까?

아니, 그건 워치 독이하는 일이 아닙니다. 워치 독은 다양한 것들이 잠겨있을 때 / 다시 시작하는 것입니다. 그것은 버스를 가로 질러 움직이는 모든 것을 실제로 보지 않습니다.


2
Fast buses require fast silicon, slow buses don't빠른 실리콘은 정확히 무엇을 의미합니까? 고순도 실리콘? 아니면 느린 버스가 실리콘과 다른 요소를 사용할 수 있다고 말하는가? 어느 쪽이든, 나는 실리콘이 꽤 싼 재료라고 생각했습니다. 워치 독에 대해서도 흥미 롭습니다. 그것에 대해 관련 질문을 할 수 있습니다.
DrZ214

1
고속 버스는 일반적으로 CPU와 같은 고성능 장치의 일부입니다. 버스 인터페이스에는 공간과 칩의 다른 부분에 대한 연결이 필요합니다. 프로세스 크기가 작고 제조 / 패키징이 더 어렵 기 때문에 프로세서 다이의 실리콘 면적이 훨씬 느린 칩보다 훨씬 비싸다. 따라서 FSB의 장치를 실제로 그러한 대역폭이 필요한 장치로만 제한하는 것이 더 저렴합니다. 그러나 더 많은 컨트롤러가 동일한 다이 (SoC)에서 CPU와 통합되므로 더 이상 사실이 아닙니다.
uint128_t

느린 버스 에는 빠른 실리콘이 필요 하지 않지만 느린 인터페이스에서 매우 빠른 드라이버 를 찾는 것은 드문 일이 아니므 로 PCB 레이아웃에 큰 골칫거리가 될 수 있습니다. 벤더가 표준 I / O 셀을 사용하고 있기 때문에 300ps 미만의 상승 및 하강 시간을 갖는 일반 PCI (PCI-X의 최대 속도 133MHz)를 보았습니다. 인터페이스로서 PCI는 일반적으로 새 프로세서에서 사용할 수 없지만이 문제는 다른 곳에서도 적용 할 수 있습니다.
피터 스미스

6

CPU가 직접 연결할 버스의 수는 일반적으로 동시에 액세스 할 수있는 CPU의 개별 부분 수로 제한됩니다. CPU가 프로그램 용 버스와 데이터 용 버스를 갖고 동시에 작동 할 수 있도록하는 것은 특히 임베디드 프로세서와 DSP의 세계에서 드문 일이 아닙니다. 그러나 일반적인 단일 프로세서는 명령주기 당 하나의 명령을 가져 오는 것만으로도 이점이 있으며 명령주기마다 하나의 데이터 메모리 위치에만 액세스 할 수 있으므로 하나의 프로그램 메모리 버스와 하나를 넘어 서면 큰 이점이 없습니다. 데이터 메모리 버스. 서로 다른 두 스트림에서 가져온 데이터에 대해 특정 종류의 수학을 수행 할 수 있도록하기 위해,

여러 개의 실행 장치가있는 프로세서의 경우 각각에 대해 별도의 버스를 갖는 것이 도움이 될 수 있으므로 여러 개의 "외부"버스가있는 경우 다른 "외부"버스에서 물건을 가져와야하는 장치가 간섭없이 그렇게 할 수 있습니다. 다른 실행 유닛에 의해 액세스되는 것들이 CPU 외부의 다른 버스를 통해 액세스 될 수있는 논리적 이유가 없다면, CPU와는 별도의 버스가 중재 유닛으로 공급되어 한 번에 하나의 요청 만 릴레이 할 수 있습니다. 특정 외부 장치는 아무것도 도움이되지 않습니다. 버스는 비싸므로 하나의 버스에 두 개의 실행 장치를 두는 것이 일반적으로 별도의 버스를 사용하는 것보다 저렴합니다. 별도의 버스를 사용하면 성능이 크게 향상되어 비용을 정당화 할 수 있지만 그렇지 않으면 리소스 (칩 영역 등)를 정당화 할 수 있습니다


-1

여러 개의 넓은 버스를 갖기 위해 CPU 패키지에 필요한 핀 수를 고려하십시오. 예를 들어, 각각 64 비트 데이터 버스가있는 8 개의 CPU 코어와 다른 목적으로 다른 핀을 분류했습니다. 현재 800 핀으로 제공되는 CPU 패키지가 있습니까?


왜 없을까요? 32x32 볼 그리드 어레이와 다층 PCB는 어려운 문제처럼 들리지 않습니다 (상대적 규모에서). 하드웨어 엔지니어는 훌륭합니다. // 얼마나 넓고 서투른 RAM 카드를 사용할 수 있는지 생각하고 1.6GHz (625 피코 초)로 계속 클럭합니다. 전기 신호가 2/3 c로 이동하면 가장 긴 트레이스의 길이는 6cm에 불과하며 길이의 몇 mm 차이만으로도 눈에 띄는 타이밍 오프셋이 발생합니다. // 레이어 간 누화는 같은 레이어의 트레이스보다 그리 나쁘지 않을 것입니다.
Oskar Skog

"아마도 800 개의 핀으로 제공되는 CPU 패키지가 있습니까?" 아, 네. 이 답변을 작성할 때 1100+ 핀을 가진 패키지가 이미 일반적이었습니다. 그리고 오늘날 일부 Skylake-EX 서버 CPU를위한 LGA3647이 있습니다.
duskwuff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.