직렬통신과 병렬통신

기운찬곰·2020년 10월 13일
1

Computer Science

목록 보기
17/27

🚀 직렬통신(Serial)

직렬 통신(Serial Bus, 시리얼버스)은 연속적으로 통신 채널이나 컴퓨터 버스를 거쳐 한 번에 하나의 비트 단위로 데이터를 전송하는 과정을 말합니다.

직렬 통신에서 데이터가 계속되어 전송되면, 각 비트를 구별할 방법이 필요합니다. 디지털 회로의 입장에서 수신된 데이터의 비트가 시간적으로 어디서 부터 시작이고 끝인지를 알 필요가 있습니다. 이렇게 데이터 비트를 복구하기 위해 데이터의 시간적 위치를 알리기 위해 동기신호를 보내는 경우와 동기 신호 없이 신호 자체에서 데이터 비트를 복원하는 방식으로 나눌 수 있습니다.

  • 동기 방식 : 데이터 신호와는 별도로 동기신호를 함께 보낸다. (SPI, I2C)
  • 비동기 방식 : 데이터 신호만을 보내고 각각의 방식에 따라 데이터 비트를 찾아낸다.

SPI


직렬 주변기기 인터페이스 버스(Serial Peripheral Interface Bus) 는 아키텍처 전이중 통신(Full-duplex) 모드로 동작하는 모토로라 아키텍처에 이름을 딴 동기화 직렬 데이터 연결 표준입니다. 참고로 전이중 통신이란 동시에 주고 받는 것이 가능하다는 의미입니다.

또한 장치들은 마스터 슬레이브 모드로 통신합니다. Master는 클럭을 주는 놈이고 한개입니다. Slave는 클럭을 받는 놈이고 N개가 될 수 있습니다. (1:N 구조)

  • SCLK(CLK) : 직렬 클럭 (마스터로부터의 출력)
  • MOSI : 마스터 출력, 슬레이브 입력 (Master Output, Slave Input)
  • MISO : 마스터 입력, 슬레이브 출력 (Master Input, Slave Output)
  • SS : 슬레이브 셀렉트 (active low, 마스터로부터의 출력).

I2C

필립스에서 개발한 직렬 버스입니다. 마더보드, 임베디드 시스템, 휴대 전화 등에 저속의 주변 기기를 연결하기 위해 사용됩니다.

I2C통신은 한사람이 보낼때는 다른사람을 받고만 있어야하는 무전기와 같은 통신방식(반이중 통신 방식, Half-Duplex)입니다. I2C통신에서는 데이터를 전송하는 SDA(Serial Data)선과 클럭을 전송하는 SCL(Serial Clock)선 두개만 필요합니다.

각 슬레이브는 개별 주소를 가지고 있으며 이 주소를 통해 식별가능합니다. 자세한 통신방법은 너무 하드웨어적인 부분이므로 여기서는 생략하도록 하겠습니다. (참고1, 참고2)


UART

앞선 두개가 동기적 직렬통신이었다면 UART는 비동기적인 직렬통신 방법입니다.

UART(범용 비동기화 송수신기: Universal asynchronous receiver/transmitter)는 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종.

비동기 통신이므로 동기 신호가 전달되지 않는다. 따라서 수신 쪽에서 동기신호를 찾아내어 데이터의 시작과 끝을 시간적으로 알아 처리할 수 있도록 약속되어 있습니다.

  • UART의 통신 방법은 마치 사람이 대화 하는 것과 같은 원리를 가지고 있습니다. UART를 하기 위해서는 Rx(데이터 수신), Tx(데이터 송신), GND가 서로 연결이 되어있어야 합니다.

  • 4가지 조건을 만족시켜줘야 합니다. 바로 통신속도(Band Rate), 데이터사이즈(Data size), Stop bit, Parity bit(오류 검출비트)


PCIe

2003년에 인텔, 델, HP, IBM이 PCI의 후속으로 최종 발표되고 2004년부터 적용된 규격으로, 줄여서 PCI-E 또는 PCIE 또는 PCIe로도 표기한다.

PCI, PCI-X와 AGP 버스를 대체하기 위하여 개발 되었다. PCIe는 앞서 언급한 버스 표준들과 비교하여 높은 시스템 버스 대역폭, 적은 I/O 핀 수, 적은 물리적 면적, 버스 장치들에게 더 뛰어난 성능 확장성, 상세한 오류 검출 및 보고 구조(Advanced Error Reporting (AER)), 네이티브 핫-플러그 기능등 여러 장점을 가지고 있다. 최근에는 하드웨어 I/O 가상화도 지원한다.

역시나 가장 큰 특징은 기존 PCI가 병렬이었다면 PCIe는 직렬방식이라는 점입니다.


QPI

퀵패스 인터커넥트(QuickPath Interconnect)는 기존의 FSB를 대신하며 마이크로프로세서간 또는 마이크로프로세서와 칩셋과의 외부 접속을 위해 인텔이 개발한 버스 프로토콜의 이름

고속, 고효율적인 패킷 기반의 점대점(point-to-point) 상호 연결 버스이다. 인텔의 CPU 중 내장된 메모리 컨트롤러를 사용하는 차세대 CPU에 이 기술이 쓰이며, 네할렘 마이크로아키텍처를 사용하는 인텔 코어 i7 데스크톱 프로세서와 서버 프로세서, 그리고 아이테니엄의 투킬라 프로세서부터 사용된다.

기타

외부 인터페이스는 USB, IEEE1394 등 전부 직렬 방식으로 대체되었고, 저장소 인터페이스 역시 병렬 방식에서 직렬 방식인 SATA, SAS로 변경되었다는 점에서 직렬통신이 병렬통신에 비해 압도록으로 많이 쓰이는 것을 알 수 있습니다...


🌹 병렬통신(Parallel)

병렬 통신은 여러 개의 병렬 채널 위로 동시에 여러 개의 데이터 신호를 보내는 방식입니다. 이 용어는 한 번에 하나의 비트 단위로 데이터를 보내는 직렬 통신과 대조됩니다.

그냥 단순히 생각해보면 데이터를 한번에 많이 보낼 수 있는 병렬통신이 직렬통신보다 유리한거 아니야? 라고 생각할 수 있습니다. 하지만 실상은 구현이 어렵고 비용이 많이 들고, 선의 부피가 커지고, 간섭이 일어나기 쉽습니다. 그래서 병렬통신은 통신 거리가 먼 경우에는 사용이 어려워서 임베디드에서 주로 쓰이고 있습니다.

PCI(peripheral component interconnect)


컴퓨터 메인보드에 주변 장치를 장착하는 데 쓰이는 컴퓨터 버스의 일종

PCI 버스는 오늘날 개인용 컴퓨터에서 가장 많이 볼 수 있는 버스이다. 표준적인 확장 버스 역할 분야에서는 한때 쓰였던 ISA 버스, VESA 로컬 버스 등을 PCI 버스가 대체해 버렸다.

2004년 후속 규격인 PCI 익스프레스가 등장. 2007년 PCI-E 2.0과 2012년 3.0이 각각 도입되면서 요즘에는 PCIe를 많이 씁니다.


마침

이번시간에는 직렬통신과 병렬통신이 뭔지에 대해 알아보고 어떤것들이 있는지 알아보았습니다.

실생활에서 많이 쓰는 컴퓨터에서 쓰이는 USB, SATA, PCIe부터 해서 아두이노나 임베디드에서 많이 쓰이는 SPI, I2C, UART 까지... 다 하나하나 중요한 개념인거 같습니다.

다음시간부터는 드디어 메모리 계층구조와 캐쉬메모리에 대해 공부를 해보도록 하겠습니다.

References

profile
배움을 좋아합니다. 새로운 것을 좋아합니다.

0개의 댓글