빠른 데이터 처리를 위하여 기존에는 소프트웨어방식으로 구현되었던 TCP/IP를 고속의 하드웨어로 구현함에 있어, TCP/IP 하드웨어와 외부 블록간의 통신을 중계하는 블록인 Host Interface를 구현하였다. Host Interface는 TCP/IP 하드웨어와 외부 블록의 중간에 위치하여 외부 블록과의 통신을 위해 AMBA AHB 규약을 따른다. Host Interface는 내부의 Command/Status Register를 통하여 CPU와 TCP/IP 하드웨어 간의 명령, 상태, 헤더 정보 등을 전달하는데 이 때에는 AMBA AHB의 Slave로서 동작한다. Data Flow를 위해서 Host Interface는 AMBA AHB의 Master로서 동작하는데, 데이터 흐름의 방향에 따라 Data flow는 데이터를 수신하는 Receive flow와 데이터를 패킷으로 만들어 보내는 Transmit Flow로 나된다. Rx Flow의 경우, UDP 블록이나 TCP Buffer로부터 받은 데이터를 내부의 작은 RxFIFO를 통해 외부 RxRAM에 써서 CPU가 읽어갈 수 있도록 하고, Tx Flow의 경우에는 외부 TxRAM에서 전송할 데이터를 읽어 와서 TxFIFO를 거쳐 UDP Buffer나 TCP Buffer에 씀으로써 패킷을 만들어 보내도록 한다. 외부 RAM의 액세스에는 Command/Status Register에 위치한 Buffer Descriptor의 정보를 이용하게 된다. Host Interface는 이러한Data Flow의 원활한 흐름을 위해서 여러 세부 기능들을 수행하게 된다. Host Interface의 기능을 검증하기 위하여 여러 testcase들이 수행되었으며, 0.18 마이크론 기술을 사용하여 synthesis한 결과, 내부의 Command/Status Register와 FIFO를 모두 포함하여 약 173K 게이트가 소요됨을 보았다.
빠른 데이터 처리를 위하여 기존에는 소프트웨어방식으로 구현되었던 TCP/IP를 고속의 하드웨어로 구현함에 있어, TCP/IP 하드웨어와 외부 블록간의 통신을 중계하는 블록인 Host Interface를 구현하였다. Host Interface는 TCP/IP 하드웨어와 외부 블록의 중간에 위치하여 외부 블록과의 통신을 위해 AMBA AHB 규약을 따른다. Host Interface는 내부의 Command/Status Register를 통하여 CPU와 TCP/IP 하드웨어 간의 명령, 상태, 헤더 정보 등을 전달하는데 이 때에는 AMBA AHB의 Slave로서 동작한다. Data Flow를 위해서 Host Interface는 AMBA AHB의 Master로서 동작하는데, 데이터 흐름의 방향에 따라 Data flow는 데이터를 수신하는 Receive flow와 데이터를 패킷으로 만들어 보내는 Transmit Flow로 나된다. Rx Flow의 경우, UDP 블록이나 TCP Buffer로부터 받은 데이터를 내부의 작은 RxFIFO를 통해 외부 RxRAM에 써서 CPU가 읽어갈 수 있도록 하고, Tx Flow의 경우에는 외부 TxRAM에서 전송할 데이터를 읽어 와서 TxFIFO를 거쳐 UDP Buffer나 TCP Buffer에 씀으로써 패킷을 만들어 보내도록 한다. 외부 RAM의 액세스에는 Command/Status Register에 위치한 Buffer Descriptor의 정보를 이용하게 된다. Host Interface는 이러한Data Flow의 원활한 흐름을 위해서 여러 세부 기능들을 수행하게 된다. Host Interface의 기능을 검증하기 위하여 여러 testcase들이 수행되었으며, 0.18 마이크론 기술을 사용하여 synthesis한 결과, 내부의 Command/Status Register와 FIFO를 모두 포함하여 약 173K 게이트가 소요됨을 보았다.
TCP/IP protocols have been implemented in software program running on CPU in end systems. As the increased demand of fast protocol processing, it is required to implement the protocols in hardware, and Host Interface is responsible for communication between external CPU and the hardware blocks of TC...
TCP/IP protocols have been implemented in software program running on CPU in end systems. As the increased demand of fast protocol processing, it is required to implement the protocols in hardware, and Host Interface is responsible for communication between external CPU and the hardware blocks of TCP/IP implementation. The Host Interface follows AMBA AHB specification for the communication with external world. For control flow, the Host Interface behaves as a slave of AMBA AHB. Using internal Command/status Registers, the Host Interface receives commands from CPU and transfers hardware status and header information to CPU. On the other hand, the Host Interface behaves as a master for data flow. Data flow has two directions, Receive Flow and Transmit Flow. In Receive Flow, using internal RxFIFO, the Host Interface reads data from UDP FIFO or TCP buffer and transfers data to external RAM for CPU to read. For Transmit Flow, the Host Interface reads data from external RAM and transfers data to UDP buffer or TCP buffer through internal TxFIFO. TCP/IP hardware blocks generate packets using the data and transmit. Buffer Descriptor is one of the Command/Status Registers, and the information stored in Buffer Descriptor is used for external RAM access. Several testcases are designed to verify TCP/IP functions. The Host Interface is synthesized using the 0.18 micron technology, and it results in 173 K gates including the Command/status Registers and internal FIFOs.
TCP/IP protocols have been implemented in software program running on CPU in end systems. As the increased demand of fast protocol processing, it is required to implement the protocols in hardware, and Host Interface is responsible for communication between external CPU and the hardware blocks of TCP/IP implementation. The Host Interface follows AMBA AHB specification for the communication with external world. For control flow, the Host Interface behaves as a slave of AMBA AHB. Using internal Command/status Registers, the Host Interface receives commands from CPU and transfers hardware status and header information to CPU. On the other hand, the Host Interface behaves as a master for data flow. Data flow has two directions, Receive Flow and Transmit Flow. In Receive Flow, using internal RxFIFO, the Host Interface reads data from UDP FIFO or TCP buffer and transfers data to external RAM for CPU to read. For Transmit Flow, the Host Interface reads data from external RAM and transfers data to UDP buffer or TCP buffer through internal TxFIFO. TCP/IP hardware blocks generate packets using the data and transmit. Buffer Descriptor is one of the Command/Status Registers, and the information stored in Buffer Descriptor is used for external RAM access. Several testcases are designed to verify TCP/IP functions. The Host Interface is synthesized using the 0.18 micron technology, and it results in 173 K gates including the Command/status Registers and internal FIFOs.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
처리 속도 또한 고속이 요구되고 있다. 본 연구실에서는 소프트웨어로 구현되어 전체 통신 시스템의 병목점으로 작용하고 있는 TCP/IP 프로토콜을 하드웨어로 구현하는 프로젝트를 수행하였다. 기존의 소프트웨어로 구현되었던 TCP/IP 프로토콜을 하드웨어로 구현함에 있어, CPU나 외부 RAM과 TCP/IP 하드웨어 블록과의 통신을 위해서 Host Interface를 구현하였다.
제안 방법
본 논문은, 고속의 데이터 처리를 위한 TCP/IP hardware accelerator 구현, 프로젝트의 일부분으로 TCP/IP 하드웨어와 CPU, 외부 RAM과의 통신을 위한 Host Interface를 다룬다. Host Interface(HI) 는 그림 1에 보이는 바와 같이, CPU와 외부 RAM, TCP/IP 하드웨어와의 통신을 담당하는 블록이다.
Hgrant를 받은 Master는 Slave에 control 신호들과 함께 읽거나 쓰기를 원하는 데이터와 주소를 보내고 Slave는 이에 대한 응답으로 Slave의 상태를 나타내는 신호들을 내보내게 된다. 본 논문에서 구현된 HI에서는 HI가 Master로 동작하는 경우, bus 점유를 보장 받기 위해 hbusreq와 함께 내보내는 hlock 신호는 0으로 고정하였다. 그밖에 bus 의 size를 의미하는 hsize는 word를 사용하였고 htransfer는 IDLE, NONSEQ, SEQ를 지원하였다.
FSM의 각 state에 따라 데이터 전송을 위한 적절한 control 신호들을 내보내게 된다. 데이터 전송은 워드 단위로 이루어지며 한 번의 hgrant에 대하여 최대 4워드씩 전송하도록 설계되었다.
그러나 각 FIFO와 외부 RAM간의 데이터 전송은 하나의 AMBA Bus를 통해 이루어지므로 두 flow 사이에서 arbitration이 이루어져야 한다. 본 논문에서 구현한 HI에서는 Rx Flow에 우선권을 주고 두 flow 간의 arbitration을 우惻서는 Round Robin 방식을 채택하였다 그림 15는 AMBA Bus Arbitration을 보이고 있는데, HI 내부에 하나의 flow만이 존재할 때는 그 flow를 위해서 AMBA Bus가 사용되고, IDLE한 상태에서 두 flow가 모두 AMBA Bus를 사용해야 하는 경우에는 Rx Flow를 위한 데이터 전송을 먼저 흐}고 그 다음에는 Tx Flow를 위해 AMBA Bus를 사용하는 식으로 번갈아 사용되는 방식이다.
HI를 위하여 다음의 testcase들을 테스트 해 보았다.
본 연구실에서는 소프트웨어로 구현되어 전체 통신 시스템의 병목점으로 작용하고 있는 TCP/IP 프로토콜을 하드웨어로 구현하는 프로젝트를 수행하였다. 기존의 소프트웨어로 구현되었던 TCP/IP 프로토콜을 하드웨어로 구현함에 있어, CPU나 외부 RAM과 TCP/IP 하드웨어 블록과의 통신을 위해서 Host Interface를 구현하였다. HI는 외부 RAM, CPU 와 TCP 하드웨어 사이에서의 통신을 중계하는 역할을 담당한다.
대상 데이터
HI는 외부 RAM을 직접 액세스하기 위해서 외부 RAM에 대한 정보를 알아야 하는데 이러한 정보를 가지고 있는 레지스터가 Buffer Descriptor(BD)이다 아래의 그림 5는 이러한 BD의 data structure를보이고 있다冋. 본 논문에서 구현한 HI에서는 Rx Flow와 Tx Flow를 위하여 각각 5개의 BD를 가지고 있다. 각 BD는 그림에서 보이는 바와 같이 데이터가 저장된 주소를 알려주는 Buffer Pointer와 그 BD가 가리키는 외부RAM의 주소에 저장된 데이터의 크기를 지칭하는 length, 그리고 상태를 나타내는 status 로 이루어져 있다.
성능/효과
Synopsys와 Samsung 0.18 마이크론 기술을 이용하여 Synthesis한 결과, HI의 area는 HI 내부의 CSR과 RxFIFO, TxFIFO를 포함하여 173731 게이트가 소요됨을 보았다.
참고문헌 (5)
James F. Kurose, Keith W. Ross 'Computer Networking: A Top-Down Approach Fraturing the Internet', Addison Wesley, 2002
'Introduction to TCP/IP Offload Engine (TOE)', http://www.10gea.org
진교홍, 이정태, '고속통신을 위한 TCP/IP 프로토콜의 하드웨어 설계 및 구현', 한국정보과학학회지, Vol. 12, No.1, pp135-153, Feb. 1998
※ AI-Helper는 부적절한 답변을 할 수 있습니다.