직렬 데이터 전송이 병렬보다 빠른 이유는 무엇입니까?


133

직관적으로, 병렬 데이터 전송이 직렬 데이터 전송보다 빠르다고 생각할 것입니다. 동시에 많은 비트를 동시에 전송하는 반면 직렬에서는 한 번에 한 비트를 수행합니다.

그렇다면 SATA 인터페이스가 PATA보다 빠르고 PCI-e 장치는 PCI보다 빠르며 직렬 포트는 병렬보다 빠릅니다.


어쩌면 그럴지도 모르겠지만 어떻게 모든 intel.com/content/www/us/en/chipsets/performance-chipsets/…를 볼 수 있습니다. PCIe의 여러 차선을 말하고 위키피디아에서 FDI를 찾아 " 2 개의 독립적 인 4 비트 고정 주파수 링크 / 채널 / 파이프 "및 4 개의 링크의 DMI 토크. (Added- Scott의 답변이 부분적으로 다룰 수 있습니다)
barlop

2
그것은 모두 클럭 속도로 귀결됩니다.
Daniel R은

36
기존의 세 가지 답변은 경제, 즉 비용 을 언급하지 못합니다 . 초고속 병렬 인터페이스보다 초고속 직렬 인터페이스를 만드는 것이 더 저렴합니다. 전송 라인의 경우, 단 몇 개의 전선을 사용하는 직렬 케이블은 병렬 케이블보다 저렴하고 차폐하기가 어렵습니다.
톱밥

13
DB25DB9 연결 시대에는 직렬통해 115kbit / s 를 푸시하는 것이 행운 이었고 병렬은 8 개의 병렬 데이터 핀으로 12Mbit / s 를 얻었습니다 .
CVn

답변:


145

이런 식으로 공식화 할 수 없습니다.

직렬 전송은 동일한 신호 주파수 에서 병렬 전송보다 느립니다 . 병렬 전송을 사용하면 사이클 당 하나의 워드 (예 : 1 바이트 = 8 비트)를 전송할 수 있지만 직렬 전송에서는 일부 (예 : 1 비트) 만 전송할 수 있습니다.

최신 장치가 직렬 전송을 사용하는 이유는 다음과 같습니다.

  • 전송기의 모든 신호 가 동시에 수신기에 도착해야하기 때문에 병렬 전송의 신호 주파수를 제한없이 높일 수 없습니다 . 신호 전송 시간 이 모든 신호 라인에 대해 동일하다는 것을 보장 할 수 없기 때문에 (메인 보드의 다른 경로를 생각할 수 있음) 이는 고주파수에 대해 보장 할 수 없습니다 . 빈도가 높을수록 더 작은 차이가 중요합니다. 따라서 수신기는 모든 신호 라인이 정해질 때까지 기다려야합니다. 분명히 기다리는 것은 전송 속도를 낮 춥니 다.

  • 이 게시물의 또 다른 좋은 점 은 병렬 신호 라인과의 누화 를 고려해야한다는 것 입니다. 주파수가 높을수록 누화가 더 두드러지고 단어가 손상 될 가능성이 높아지고 단어를 다시 전송할 필요가 있습니다. 1

따라서 직렬 전송으로 사이클 당 더 적은 데이터를 전송하더라도 훨씬 더 높은 주파수로 이동하여 순 전송률이 높아집니다.


1 또한 UDMA 케이블 (전송 속도가 증가한 병렬 ATA)에 핀보다 2 배 많은 와이어가있는 이유를 설명합니다 . 누화를 줄이기 위해 모든 두 번째 와이어를 접지했습니다.


9
리시버는 모든 라인이 동시에 정해질 때까지 기다릴 필요가 없습니다. 요즘 빠른 병렬 전송에는 각 와이어의 도착 지연 을 개별적으로 측정하고 보상하는 것이 포함 됩니다 . 이것은 심지어 CPU <-> DRAM과 같은 짧은 온보드 링크에도 적용됩니다! 이것은 임베디드 클럭 (예 : 8b / 10b 코딩) 및 / 또는 훈련 시퀀스와 같은 일부 직렬 기술을 채택함으로써 가능해졌습니다.
Beni Cherniavsky-Paskin 2016 년

당신의 정교함은 당신의 진술과 모순됩니다. 시리얼이 더 느리다 는 말을 시작 하고 왜 더 빠른지 설명하십시오. 나는 그것이 혼란의 근원이라고 생각하고 그것이 어떻게 대답 할 수 있는지 궁금합니다.
Val

11
@Val 당신은 전체 답변을 읽고 있지 않습니다. 그들은 같은 속도를 갈 때 버스는 자동차보다 더 많은 사람을 이동 -하지만 방식 때문에 물리 작품으로,이 차는 갈 수있는 방법은 버스보다 더 빨리, 그래서 버스보다 차를 사용하여 사람들을 이동 빠릅니다. 동일한 속도로 병렬 케이블이 직렬 케이블보다 더 많은 데이터를 이동합니다. 그러나 직렬 케이블을 밀어 병렬 케이블보다 훨씬 빠르게 작동 할 수 있습니다. 병렬 케이블의 속도를 높이려고하면 물리학으로 인해 데이터가 쓰레기가됩니다.
Darth Android

1
사실 나는 거꾸로 본다. 사람들이 개별 자동차를 병렬 자동차로 이동하는 것을 선호하지만 사람들을 소형 3D 도시로 포장하는 대신 광범위한 교외 인프라를 개발하기 때문에 모든 사람과 함께 자동차를 운송하지 않기 때문에 처리량이 높은 여객 (공공) 운송입니다. 직렬 비트 버스트를 기차로 봅니다. 대략 패킷을 전송하는 것은 비용이 많이 들지만 패킷 당 전송하는 데이터의 양은 중요하지 않습니다. 따라서 1000 대의 병렬 차량이 아닌 1000 비트의 열차를 보내는 것이 1000 배 저렴합니다.
Val

1
@Val 그것은 교통이 작동하는 방식이지만 전자기 물리학이 작동하는 방식이 아니며 비유로 적합하지 않습니다. 여기서 효율성과 속도, 처리량에 대해서만 말하는 사람은 없습니다. 병렬 링크가 클록주기 당 더 많은 데이터를 이동할 수 있지만 직렬 링크는 클록주기 당 더 적은 데이터를 이동할 수 있지만 동일한 시간 프레임에서 훨씬 더 많은 클록주기를 가지므로 여전히 처리량이 더 높습니다.
Darth Android

70

문제는 동기화입니다.

병렬로 보낼 때 모든 순간을 정확히 같은 순간에 측정해야합니다. 그 순간의 창 크기가 빨라질수록 점점 작아지고 결국에는 일부 전선이 여전히 안정화 될 수있을 정도로 작아 질 수 있습니다 당신이 시간이 다 떨어지기 전에 다른 사람이 완료되는 동안.

직렬로 전송하면 더 이상 한 줄만 안정화되는 모든 줄에 대해 걱정할 필요가 없습니다. 또한 한 줄을 같은 속도로 10 줄을 추가하는 것보다 10 배 빠르게 안정화시키는 것이 더 비용 효율적입니다.

PCI Express와 같은 일부 기능은 두 가지 이점을 모두 활용하며 병렬 직렬 연결 세트를 수행합니다 (마더 보드의 16x 포트에는 16 개의 직렬 연결이 있음). 그렇게하면 다른 쪽 끝의 컨트롤러가 올바른 순서를 사용하여 데이터의 "패킷"을 다시 정렬 할 수있는 한 각 줄이 다른 줄과 완벽하게 동기화 될 필요는 없습니다.

PCI-Express에 대한 방법 물건을 작품 페이지는 PCI 익스프레스 직렬에서 병렬 PCI 또는 PCI-X보다 더 빠르게 할 수있는 방법에 대한 깊이 아주 좋은 explination 않습니다.


TL; DR 버전 : 고주파수에 도달하면 8 개의 연결보다 2 배 빠른 연결보다 단일 연결을 16 배 빠르게 만드는 것이 더 쉽습니다.


1
@barlop 이더넷에서 병렬을 수행 할 수 있지만 소비자 용으로는 흔하지는 않지만이를 채널 본딩 이라고 합니다. -정정 : 무선 주파수의 본딩을 사용하여 소비자가 일반적으로 사용하고 있습니다. 802.11n이 최대 600Mbit / s의 속도를 얻을 수있는 방법이며 최대 4 개의 동시 직렬 스트림을 사용합니다.
Scott Chamberlain

1
@ barlop 잘못된 용어를 썼습니다. 채널 본딩은 더 넓은 일반적인 용어입니다. 특히 이더넷의 경우, 당신이 요구하는 것에 대한 올바른 용어를 링크 집계 라고 합니다.
Scott Chamberlain

2
Rich Seifert는 "실제로 많은 사람들이 IEEE 802.11"무선 이더넷 "이라고 부릅니다. 기술 논점 (IEEE 802.3과 동일한 프레임 형식을 사용하지는 않음)에도 불구하고 분명히 말하지만, 말할 때도 함께 살 수 있습니다 " 기술 차이가 중요하지 않은 사람들에게 ." <-그의 말. 나는 몇 년 전 그가 802.3x와 의장 이더넷 II (겉보기에는 DIX 이더넷, 10Mbps 이더넷)를 맡고 편집하고 있다는 것을 읽었으며, 그는 "IEEE 802.3z 기가비트 이더넷 태스크 포스에 적극적으로 참여하고 있습니다"라고 읽었습니다. 따라서 802.11이라고 말할 권한이 이더넷이 아닙니다.
barlop

1
1000BASE-T 이더넷 (802.3ab, "기가비트 이더넷")은 4 개의 와이어 쌍을 병렬로 사용합니다.
MSalters 2016 년

4
이더넷의 경제성은 SATA와 같은 버스와 다릅니다. 케이블은 교체하는 데 매우 길고 비용이 많이 들기 때문에 결국 전자 장치를 업그레이드하는 데 집중합니다. 초기 이더넷은 1 쌍의 와이어를 사용했지만 향후 사용을 예상하는 4 쌍 케이블로 표준화했습니다 (그 당시의 병렬 방식은 빠른 전송에 대한 확실한 접근 방식이었습니다). 누화로 인해 이것은 어려운 것으로 판명되었지만 케이블이 이미 있으므로 케이블을 사용하지 않는 것이 부끄러운 일이었습니다. 결국, 매우 복잡한 DSP 프로세싱-> D2A-> ... 케이블 ...-> A2D-> DSP 프로세싱으로 누화 제거가 가능해졌습니다.
Beni Cherniavsky-Paskin

19

병렬은 본질적으로 느리지 않지만 직렬 통신이하지 못하는 문제를 야기합니다.

그러나 대부분의 가장 빠른 링크는 여전히 병렬입니다. 컴퓨터의 전면 버스는 일반적으로 매우 병렬 적이며 일반적으로 컴퓨터에서 가장 빠른 인터링크 중 하나입니다. 광섬유 연결은 단일 광섬유를 통해 여러 파장을 전달함으로써 매우 평행 할 수 있습니다. 그러나 이것은 비싸므로 일반적이지 않습니다. 기가비트 이더넷의 가장 일반적인 형태는 실제로 단일 와이어에서 250Mbit 이더넷의 4 개의 병렬 채널입니다.

병렬 처리에 의해 가장 두드러진 도전은 "크로스 토크"입니다. 신호 전류가 시작되거나 중지 될 때, 그 옆의 전선에 순간적으로 작은 전류가 유도됩니다. 신호가 빠를수록 더 자주 발생하며 필터링하기가 더 어려워집니다. 병렬 IDE는 리본 케이블의 와이어 수를 두 배로 늘리고 다른 모든 와이어를 접지에 연결하여이 문제를 최소화하려고했습니다. 그러나 그 솔루션은 지금까지만 가능합니다. 긴 케이블, 접힘 및 루프 및 다른 리본 케이블과의 근접성 덕분에 매우 빠른 신호를위한 신뢰할 수없는 솔루션입니다.

그러나 하나의 신호 라인 만 사용한다면 하드웨어가 허용하는 한도 내에서 빠르게 전환 할 수 있습니다. 또한 일부 신호가 다른 신호보다 빠르게 이동하는 미묘한 동기화 문제를 해결합니다.

두 개의 와이어는 이론적으로 항상 두 배 빠르지 만, 추가하는 각 신호 라인은 물리를 미묘하게 복잡하게 만들므로 피하는 것이 좋습니다.


FSB는 인텔 코어 2 시대 이후로 주류 CPU 디자인의 일부가 아니 었으며 AMD는 AMD64 디자인으로 몇 년 전보다 늦었습니다. 대신 둘 다 메모리 컨트롤러를 CPU 자체로 옮기고 FSB의 (상대적으로) 넓거나 느린 디자인 대신 빠르고 좁은 버스를 사용하여 다른 모든 것을 CPU에 연결했습니다.
Dan Neely

누화 감소 기술은 수십 년 동안 알려져 왔지만, 질문에 대한 의견에서 언급 한 바와 같이 추가 비용이 발생하고 일부는 동기화 문제를 악화시킵니다. 전송 속도의 변화 및 ...).
dmckee

13

직렬 데이터 전송은 병렬보다 빠르지 않습니다. 더욱 편리하고 개발이 진행되어 장비 장치간에 빠른 외부 직렬 인터페이스를 만들었습니다. 아무도 50 개 이상의 도체가있는 리본 케이블을 다루고 싶지 않습니다.

회로 보드의 칩 사이에서 두 개의 와이어 만 필요한 I2C와 같은 직렬 프로토콜은 수많은 병렬 트레이스를 라우팅하는 것보다 처리하기가 훨씬 쉽습니다.

그러나 컴퓨터 내부에는 병렬 처리를 사용하여 대역폭을 크게 늘리는 예제가 많이 있습니다. 예를 들어, 단어는 메모리에서 한 번에 한 비트 씩 읽지 않습니다. 실제로 캐시는 큰 블록으로 채워집니다. 래스터 디스플레이는 또 다른 예입니다. 여러 메모리 뱅크에 병렬로 액세스하여 픽셀을 더 빠르게 병렬로 가져옵니다. 메모리 대역은 병렬 처리에 크게 좌우됩니다.

Tektronix가 "세계에서 가장 빠른 상용 10 비트 고속 DAC"로 선전 한이 DAC 장치 는 병렬 처리를 많이 사용하여 데이터를 가져옵니다. 320 개의 라인을 통해 DAC로 가져와 2 단계의 멀티플렉싱을 통해 10으로 줄었습니다. 마스터 12GHZ 클럭의 서로 다른 부분에 의해 구동 단일 직렬 입력 라인을 사용하여 세계에서 가장 빠른 10 비트 DAC를 만들 수 있다면 아마도 그럴 것입니다.


1
50 핀 리본 케이블 언급시 +1 SAS / SATA 케이블을 사용하려는 동기 중 하나는 넓은 케이블이 박스 내부의 공기 흐름에 영향을 미친다는 것입니다.
jqa

11

병렬은 버스 / 케이블 및 온칩 전송에 유사한 전기 기술을 사용할 수있을 정도로 로직 게이트가 느릴 때 속도를 높이는 확실한 방법이었습니다. 트랜지스터가 허용하는 한 빨리 와이어를 토글하고 있다면 스케일링하는 유일한 방법은 더 많은 와이어를 사용하는 것입니다.

시간이 지남에 따라 무어의 법칙은 전자 기적 제약을 뛰어 넘어 케이블 또는 온보드 버스를 통한 전송이 온칩 속도와 비교하여 병목 현상을 일으켰습니다. OTOH는 속도 불균형으로 인해 끝에서 정교한 처리를 통해 채널을보다 효과적으로 사용할 수 있습니다.

  • 전파 지연이 몇 개의 클럭 순서에 도달하면 반사와 같은 아날로그 효과에 대해 걱정하기 시작합니다. => 경로에 따라 일치하는 임피던스가 필요하며 (특히 커넥터에는 까다로운) 다중 포인트 버스보다 점대 점 와이어를 선호합니다. 그렇기 때문에 SCSI에 터미네이션이 필요했고 USB에 간단한 스플리터 대신 허브가 필요합니다.

  • 더 빠른 속도에서는 와이어를 따라 주어진 순간에 여러 비트가 비행합니다. => 파이프 라인 프로토콜을 사용해야합니다 (인텔의 FSB 프로토콜이 엄청나게 복잡해졌습니다 .PCI와 같은 패킷 프로토콜은이 복잡성에 대한 반응이라고 생각합니다).

    또 다른 효과는 신호 흐름 방향을 전환 할 때 여러 주기로 인한 불이익입니다. 따라서 방향 당 전용 와이어를 사용하는 Firewire 및 SATA 및 PCIe가 USB 2.0보다 성능이 뛰어납니다.

  • 유도 잡음 (일명 누화)은 주파수와 함께 올라갑니다. 속도에서 가장 큰 발전은 누화를 극적으로 감소시킨 차동 신호의 채택에서 비롯되었습니다 (수학적으로, 불균형 전하 필드는 R ^ 2로 내려가지만 쌍극자 필드는 R ^ 3으로 내려갑니다).

    이것이 바로 "직렬이 병렬보다 빠르다"라는 인상을 초래 한 것으로 생각 합니다. 점프가 너무 커서 1 또는 2 개의 차동 쌍으로 내려갈 수 있으며 LPT 또는 IDE 케이블보다 여전히 빠릅니다 . 케이블에 신호 쌍이 하나만 있으면 누화가 발생하지만 사소한 문제입니다.

  • 와이어 전파 지연은 (길이가 90º 회전, 커넥터 등에서 일치하기 어렵고 다른 도체의 기생 효과 때문에) 길이가 동기화 문제를 일으킨다.

    해결책은 모든 수신기에서 조정 가능한 지연을 가지고 시작시 및 / 또는 데이터 자체에서 지속적으로 조정하는 것이 었습니다. 0 또는 1의 줄무늬를 피하기 위해 데이터를 인코딩하면 작은 오버 헤드가 발생하지만 전기적인 이점 (DC 드리프트 방지, 스펙트럼 제어)이 있으며 가장 중요한 것은 클럭 와이어를 완전히 떨어 뜨릴 수 있다는 것입니다 (40 개 이상은 큰 문제가 아닙니다) 직렬 케이블의 경우 2 또는 3 대신 1 또는 2 쌍을 갖는 것이 매우 중요합니다.

우리가 참고 하는 병목 현상에 병렬 처리를 던지는 - 오늘날의 BGA 칩은 핀의 수백 또는 수천, PCB는 점점 더 많은 레이어를 가지고있다. 기존 40 핀 마이크로 컨트롤러 및 2 계층 PCB와 비교해보십시오.

상기 기술의 대부분은 필수적이되었다 모두 병렬 및 직렬 전송. 전선이 길수록 전선 수가 적을수록 더 높은 속도를내는 것이 더 매력적입니다.

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