PCI Express 계층 구조 - Terry4055/FPGA_HW GitHub Wiki
하드웨어 관점의 3개의 Layer
- Transaction Layer
- 소프트웨어 계층으로부터 읽기 및 쓰기 요청 수신하고 링크 계층으로 전송하기 위한 요청 패킷(TLP) 만듬.
- 트랜잭션 계층은 아키텍쳐상 가장 상위 계층이다.
- 이 계층의 가장 중요한 역할은 트랜잭션 계층 패킷(TLP)의 조립 및 분해 이다.
- TLP는 Read 및 Write 트랜잭션의 커뮤니케이션이고, 여기에 몇몇 이벤트 트랜잭션도 포함된다. 이 계층에서는 크레딧을 기반으로 한 TLP의 흐름 제어 역할도 수행 한다.
- Response 패킷을 필요로 하는 Request 패킷은 모두 스플릿트 트랜잭션으로 구현된다.
- 트랜잭션 타입인 Memory,I/O,Configuration,Message에 따라 패킷 포멧은 서로 다른 어드레싱 형식을 가지게 된다.(PCI에서 Message가 추가 된 것)
- Data Link Layer
- 링크 레이어의 주된 역할은 PCI Express 링크를 통해 패킷을 안정적으로 전달 하는 것. 링크 계층은 데이터 무결성을 담당하며, Transaction 층 패킷에 시퀀스 번호와 CRC를 추가한다.
- 신용 기반의 흐름 제어 포로토콜은 수신측에서 버퍼가 이 패킷을 받을 수 있을 때에만 패킷들이 전송 된다.(리소스 제한으로 인한 패킷 재시도 및 버스 대역폭 낭비를 방지)
- 링크 계층은 패킷이 손상 된 것으로 판단되면 자동적으로 재시도한다.
- 링크 관리와 에러 감지, 에러 복구를 통해 데이터 무결성을 보장 한다.
- 데이터 링크 계층의 송신부에서는 Transaction에서 조립된 TLP 을 받아들여서 계산된 데이터 보호 코드와 TLP 시퀀스 넘버를 부여후 이를 물리 계층으로 보내서, 물리 계층에서는 링크를 통해 이들을 송신 하게 된다.
- 데이터 링크 계층은 또한 링크 관리 기능을 위해 사용되는 패킷의 생성 및 소비를 담당하기도 한다. TLP와 구별하기 위해 데이터 링크 계층에서 이러한 목적으로 생성 및 소비되는 패킷을 DLLP(데이터 링크 계층 패킷)이라고 부른다.
- Physical Layer
- 쿨리 링크 신호는 심볼간 간섭을 줄이기 위해 De-emphasis 방식을 사용하여 데이터 무결성을 향상 시킨다. 데이터 클럭은 매우 높은 데이터 처리 속도를 위해 8b/10b 인코딩 방식을 사용, 피지컬 레이어는 Link Layer와 2개의 PCI Express Agent 사이에서 패킷들을 전송 한다.
- 물리 계층은 인터페이스 동작을 위한 드라이버 및 입력버퍼, 병렬 to 직렬 / 직렬 to 병렬 변환, PLL, 임피던스 매칭 회로 등이 있다.
- 데이터 링크 계층에서 수신한 정보를 적절한 직렬 형태로 변환 하여 이를 링크의 상대측에 있는 디바이스와 호환되는 주파수 및 폭으로 PCI Express 링크를 통하여 송신한다.