I/O 인터페이스와 버스
PCI Express 기기의 레지스터나 메모리를 CPU에서 읽고 쓸 수 있게 하는 구조로 올바른 것은 무엇입니까?
- A부팅 시 OS 등이 기기가 요구하는 크기를 조사하고, BAR(베이스 어드레스 레지스터)에 주소를 할당하여 메모리 주소로 보이게 한다
- B기기마다 제조 시에 고정된 주소가 정해져 있다
- CCPU는 기기의 레지스터를 읽을 수 없고 모든 것을 DMA로 주고받는다
정답과 해설 보기
정답: A. 부팅 시 OS 등이 기기가 요구하는 크기를 조사하고, BAR(베이스 어드레스 레지스터)에 주소를 할당하여 메모리 주소로 보이게 한다
PCI Express 기기는 자신의 레지스터와 메모리 크기를 BAR로 알립니다. 부팅 시 펌웨어와 OS가 연결된 모든 기기를 조사하고(열거), 주소가 겹치지 않도록 할당합니다. 이후 CPU는 할당된 주소를 일반 메모리처럼 읽고 써서 기기를 조작합니다. 기기를 나중에 꽂았을 때도 같은 방식으로 주소가 할당됩니다.
- A. 올바릅니다. 메모리 맵 I/O로 사용합니다.
- B. 고정되어 있으면 기기끼리 주소가 겹치게 됩니다.
- C. CPU는 레지스터를 직접 읽고 쓸 수 있습니다.