임베디드 시스템에서 동기/비동기, Synchronous/Asynchronous (수정중)
2022. 2. 15. 17:24목적
우리가 데이터를 보낸 다고 생각해보자. 근데 마구잡이로 보내버리면,
어느 시점에서 시작이고 어느 시점이 끝인지 모른다...
생각해보자. 0이 쓰여진 공과 1이 쓰여진 공을, 건너편 상대에게 마구 던진다음.
내가 보낸 숫자가 뭐니? 라고 물어보면, 상대가 대답할 수 있나? 없다.
결국, 어느 시점이 시작이고, 어느 시점이 끝인 지를 알기 위해, 전송방법을 고려할 필요가 있습니다.
100개의 공 전달 방법을 고려하던 중, 철수와 영희는 다르게 생각합니다.
철수 : 나는 매 정각마다 이 공을 너에게 줄게.
영희 : 나는 처음엔 start가 쓰여진 공을 주고, 공을 다 주었으면 stop 공을 줄게.
각각의 장단점은 무엇일까요?
차이점 (기능 부분)
1. Synchronous는 Clock 신호가 붙어있고, Asynchronous는 Clock 신호가 없다.
2. Synchronous는 MCU와 Clock을 맞추어 Data를 보내고, 그 Clock에 맞추어 Data를 되돌려준다.
Asynchronous는 신호를 입력하면 (Bus에서 특별히 약속된 신호를 넣어주면) 안쪽에서 뽁작 처리 한 후(Wait State라고 불리우는 신간이 필요하다. 응답할 때 까지 지연스긴) 그 응답을 돌려준다.
그래서, latency가 발생하게 되고, 그 응답을 받을 때 까지 MCU가 기다려야 하는 일이 빈번하게 발생.
3. Synchronous는 MCU clock과 연동되어 박자를 맞추고 있으니, MCU와 제 시간에 맞게 데이터를 원활히 주고 받을 수 있음.
Asyncrhonous는 무조건 느리고 빠른게 아닌, 그때그때 적당한 Interface가 있는 거라서, 서로 다른 종류의 acceess 방법이라고 보면 된다.
직렬통신에서의 동기/비동기
- 동기 통신은 송신자와 수신자 사이 별도의 클럭 신호를 사용하는 통신 방법.
동기 통신에서 송신자와 수신자는 서로 공유하는 클럭 신호에 맞추어 데이터 주고 받음.
장점은, 양측은 정확한 통신 속도에 대해 미리 약속할 필요가 없다. 하지만 클럭 신호의 어떤 에지에서 데이터를 읽어야하는 지는 상호 간의 약속이 필요.
그리고, 하지만, 최고 속도의 제한은 있다. 너무 빠르면, 수신자가 수신할 수 없어서.
- 비동기 통신은 클록신호가 없기에, 데이터 전송 직전 시작을 알리는 비트 (start bit)를 먼저 보내,
"나 데이터 보낼 게"를 알려야 한다. 그 후, 시작비트 보내고, 다음부터, 데이터를 한 비트 씩 보내고 마지막엔, 통신의 끝을 알리는 정지 비트 (stop bit)를 보내 통신이 끝났음을 알린다. 시작 비트는 논리 '0', 정지 비트는 논리 '1'이다.
- 동기는 마스터/슬레이브 관계로 동작함. 한쪽이 통신의 주도권(마스터)를 가지고, 다른쪽은 슬레이브. 마스터가 통신에 필요한 클럭을 출력하여 슬레이브는 마스터가 출력하는 클록신호에 응답.
비동기는 두 주체가 서로 대등한 관계에서 일대일 통신. 양쪽 모두 원하는 때에 언제든지 데이터 보낼 수 있음.
참고자료/인용자료
'컴퓨터 시스템' 카테고리의 다른 글
멀티스레드 프로그래밍 패턴 (작성중) (0) | 2022.02.11 |
---|---|
Windows - IOCP (Input/output completion port)와 Linux - epoll (비공개, 수정중) (0) | 2022.02.11 |
MSI 노트북 배터리 보정 및 배터리 제한 (0) | 2022.02.08 |
[USB] Tiny USB (0) | 2022.02.05 |
USB 2.0 스팩 및 프로토콜 이해 (0) | 2022.02.05 |