타이밍 분석과 CDC
비동기 FIFO에서는 상대의 포인터를 동기화해서 사용하므로, 보이는 포인터 값이 2~3사이클 오래된 값이 됩니다. 이 지연이 full/empty 판정에 미치는 영향으로 올바른 것은?
- Afull이나 empty의 해제가 늦어질 뿐, 오버플로나 빈 상태에서의 읽기는 일어나지 않는다
- Bfull 판정이 늦어지므로 너무 많이 써서 데이터가 넘칠 수 있다
- Cempty 판정이 늦어지므로 빈 FIFO에서 읽어 버릴 수 있다
정답과 해설 보기
정답: A. full이나 empty의 해제가 늦어질 뿐, 오버플로나 빈 상태에서의 읽기는 일어나지 않는다
쓰기 측이 보는 읽기 포인터는 오래된 값이므로 실제보다 읽기가 진행되지 않은 것처럼 보이고, FIFO는 실제보다 더 많이 차 있다고 판단됩니다. 즉 full은 정말로 가득 찼을 때는 반드시 나와 있고, 빈 공간이 생긴 후의 해제가 조금 늦어질 뿐입니다. 읽기 측의 empty도 마찬가지로, 새로 쓰인 데이터가 보이는 것이 늦어질 뿐입니다. 둘 다 안전 측(비관적)으로 작용하므로 데이터는 깨지지 않지만, 그 지연만큼 성능을 유지하기 위해 깊이에 여유를 둡니다.