Abstract
When a PCI 2.2 bus master requests data using Memory Read command, a target device may hold PCI bus without data to be transferred for long time because a target device needs time to prepare data infernally. Because the usage efficiency of the PCI bus and the data transfer efficiency are decreased due to this situation, the PCI specification recommends to use the Delayed Transaction mechanism to improve the system performance. But the mechanism cann't fully improve performance because a target device doesn't know the exact size of prefetched data. In the previous work, we propose a new method called Prefetch Request when a bus master intends to read data from the target device. In this paper, we design PCI 2.2 controller and local device that support the proposed method. The designed PCI 2.2 controller has simple local interface and it is used to convert the PCI protocol into the local protocol. So the typical users, who don't know the PCI protocol, can easily design the PCI target device using the proposed PCI controller. We propose the basic behavioral verification, hardware design verification, and random test verification to verify the designed hardware. We also build the test bench and define assembler instructions. And we propose random testing environment, which consist of reference model, random generator ,and compare engine, to efficiently verify corner case. This verification environment is excellent to find error which is not detected by general test vector. Also, the simulation under the proposed test environment shows that the proposed method has the higher data transfer efficiency than the Delayed Transaction about $9\%$.
PCI 2.2 마스터 디바이스가 타겟 디바이스로부터 데이터를 읽어 오고자 할 때 타겟 디바이스는 내부적으로 데이터를 준비해야 함으로 인해 PCI 버스가 데이터 전송 없이 점유되는 상황이 발생한다. 이를 위해 PCI 2.2 사양에서는 지연전송을 제안하여 전송 효율을 향상시켰지만 이 역시 타겟 디바이스가 얼마의 데이터를 미리 준비 해둘지를 알 수 없어 버스 사용 및 데이터 전송 효율을 떨어뜨리는 원인을 제공한다. 이에 앞선 연구에서는 이를 해결하기 위한 프리페치 요구를 이용하는 새로운 방법을 제안하였다. 본 논문에서는 이 방법을 지원하는 PCI 타겟 컨트롤러와 로컬 디바이스를 설계하였다. 설계된 PCI 타겟 컨트롤러는 간단한 로컬 인터페이스를 가질 뿐 아니라 PCI 2.2를 전혀 모르는 사용자도 쉽게 PCI 인터페이스를 지원할 수 있도록 설계되었다. 또한 설계된 하드웨어를 효과적으로 검증하기 위한 방법으로 기본 동작 검증, 설계 기반검증, 그리고 랜덤 테스트 검증을 제안하였다 이러한 검증을 위해 테스트 벤치와 테스트 벤치를 동작시키는 위한 명령어를 제안하였다. 그리고 랜덤 테스트를 위해 참조 모델, 랜덤 발생기, 비교 엔진으로 구성된 테스트 환경을 구축하였으며 이를 이용해 코너 케이스를 효과적으로 검증할 수 있다. 또한 제안된 테스트 환경을 통해 시뮬레이션 한 결과, 프리페치 요구를 이용한 제안된 방법이 지연 전송에 비해 데이터 전송 효율이 평균 $9\%$ 향상되었다.