본 논문은 TCP/IP프로토콜 스택을 위한 RISC 기반 송신 래퍼 프로세서의 설계를 기술하였다. 설계된 프로세서는 이중 뱅크 구조를 갖는 입출력버퍼, 32 비트 RISC 마이크로프로세서, 온라인 체크섬 계산 기능을 갖는 DMA모듈, 메모리 모듈로 구성되어 있다. TCP/IP 프로토콜의 다양한 동작모드를 지원하기 위해 기존의 상태 머신 기반의 설계 방식이 아닌 RISC 프로세서에 기반을 둔 하드웨어-소프트웨어 공동설계 설계기법이 사용되었다. 데이터 전달 동작과 체크섬 동작의 순차적인 수행에 기인한 커다란 지변 시간을 제거하기 위해, 데이터 전달 동작과 병렬적으로 체크섬 동작을 수행할 수 있는 DMA 모듈이 채택되었다. 가변 크기의 입출력 버퍼를 제외한 프로세서는 0.35${\mu}m$CMOS 공정 조건에서 약 23,700개의 게이트로 구성되며, 최대 동작 주파수는 약 167MHz를 가짐을 확인하였다.
본 논문은 TCP/IP 프로토콜 스택을 위한 RISC 기반 송신 래퍼 프로세서의 설계를 기술하였다. 설계된 프로세서는 이중 뱅크 구조를 갖는 입출력 버퍼, 32 비트 RISC 마이크로프로세서, 온라인 체크섬 계산 기능을 갖는 DMA 모듈, 메모리 모듈로 구성되어 있다. TCP/IP 프로토콜의 다양한 동작모드를 지원하기 위해 기존의 상태 머신 기반의 설계 방식이 아닌 RISC 프로세서에 기반을 둔 하드웨어-소프트웨어 공동설계 설계기법이 사용되었다. 데이터 전달 동작과 체크섬 동작의 순차적인 수행에 기인한 커다란 지변 시간을 제거하기 위해, 데이터 전달 동작과 병렬적으로 체크섬 동작을 수행할 수 있는 DMA 모듈이 채택되었다. 가변 크기의 입출력 버퍼를 제외한 프로세서는 0.35${\mu}m$ CMOS 공정 조건에서 약 23,700개의 게이트로 구성되며, 최대 동작 주파수는 약 167MHz를 가짐을 확인하였다.
In this paper, a design of RISC-based transmission wrapper processor for TCP/IP protocol stack is described. The processor consists of input and output buffer memory with dual bank structure, 32-bit RISC microprocessor core, DMA unit with on-the-fly checksum capability, and memory module. To handle ...
In this paper, a design of RISC-based transmission wrapper processor for TCP/IP protocol stack is described. The processor consists of input and output buffer memory with dual bank structure, 32-bit RISC microprocessor core, DMA unit with on-the-fly checksum capability, and memory module. To handle the various modes of TCP/IP protocol, hardware-software codesign approach based on RISC processor is used rather than the conventional state machine design. To eliminate large delay time due to sequential executions of data transfer and checksum operation, DMA module which can execute the checksum operation along with data transfer operation is adopted. The designed processor exclusive of variable-size input/output buffer consists of about 23,700 gates and its maximum operating frequency is about 167MHz under 0.35${\mu}m$ CMOS technology.
In this paper, a design of RISC-based transmission wrapper processor for TCP/IP protocol stack is described. The processor consists of input and output buffer memory with dual bank structure, 32-bit RISC microprocessor core, DMA unit with on-the-fly checksum capability, and memory module. To handle the various modes of TCP/IP protocol, hardware-software codesign approach based on RISC processor is used rather than the conventional state machine design. To eliminate large delay time due to sequential executions of data transfer and checksum operation, DMA module which can execute the checksum operation along with data transfer operation is adopted. The designed processor exclusive of variable-size input/output buffer consists of about 23,700 gates and its maximum operating frequency is about 167MHz under 0.35${\mu}m$ CMOS technology.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
데이터 전송 방식을 채택하였다. 단, DMA 동작 시 RISC 코아가 정지되는 대신에 데이터 메모리 (Packet Memory)를 사용하지 않은 다른 명 령이 수행 가능하도록 하였다. 그리고 체크섬 계산 동작은 16 비트 데이터에 대해 1의 보수 덧셈(l's complement addition) 연산을 이용하여 구현된다.
단, 최종적으로 얻어진 2 개의 16 비트 결과에 대해 추가의 16 비트 :I의 보수 덧셈을 수행하여 최종 16비트 체크섬을 얻게 된다. 따라서 본 연구에서는 체크섬을 계산하기 위한 별도의 전용 하드웨어를 준비하여 내부 RISC를 사용하지 않고 체크섬을 계산할 수 있도록 하는 방식을 채택하였다. 그리고 DMA 전송 과정에 체크섬을 계산할 수 있도록 하여 체크섬에 따른 오버헤드 문제를 제거할 수 있도록 하였다.
네트워크 분야도 NoC(Network on a Chip)[7] 을 위해 다양한 네트워크용 하드웨어 모듈이 개발되고 있다. 본 연구에서는 TCP/IP 프로토콜의 다양한 프로토콜과 다수의 선택사양을 고려하여, 전용 하드웨어가 아닌 프로그래밍 가능한 RISC 마이크로프로세서를 기반으로 하는 TCP/IP 프로토콜 스택의 전송 처리를 수행하는 NoC용 프로세서 IP 를 설계하고 검증하였다.
이러한 하드웨어 래퍼는 각 계층안의 독립성을 최대한 보장하고 모듈화된 설계를 위해, 입출력 버퍼와 프로토콜 처리를 위한 송수신 모듈, 내부 메모리로 구성된다. 본 연구에서는 이러한 래퍼 개념을 네트워크 프로토콜 가속기 NoC (N하work on a Chip)에 적용하여, TCP/IP 프로토콜 계층을 처리하는 하드웨어 IP를 개발하는 것을 목표로 하였다.
제안 방법
그림 11은 32 비트 데이터 버스 값을 수신해서, 16 비트씩 나누어 병렬로 처리하는 체크섬 연산 회로를 나타낸다. TCP/IP의 체크섬을 구현하기 위해 DMA 동작중의 데이터를 감지하여 체크섬을 수행하는데, 32 비트 덧셈기가 아닌 캐리 선택 가산기(carry select adder)를 수정한 2개의 16 비트 1의 보수 덧셈기(回 표시)를 사용하여 구현한다. 단 데이터 버스 값을 DMAJBU压 레지스터에 저장해 두었다가 다음 사이클에 연산을 수행하며, 최종 결과는 16 비트 결과에 대해 추가의 1의 보수 덧셈을 통해 구현한다.
수신부에 사용되기 위해 체크섬 생성 기능과 체크섬 오류 감지 기능을 갖고 있다. TCP와 IP 계층의 다양한 선택 사양 (Option)을 상태도 형식의 전용 하드웨어로 구현하는 것은 융통성이 없고 지원 프로토콜의 확장에 제약을 야기하므로, 본 연구에서는 TCP/IP 동작 분석을 바탕으로 30개의 전용 명령을 갖는 32 비트 RISC 마이크로프로세서를 설계하여, RISC 코어가 패킷 형식 변경과 제어 기능을 담당하고 다양한 옵션과 동작 모드를 지원할 수 있도록 하였다. RISC 내부 구조는 기존 마이크로프로세서와 달리 폰노이만(Von-Neumann) 구조가 아닌 하버드(Harvard) 구조를 갖고 있으며, 5단 파이프라인과 함께 TCP/IP의 프로토콜 처리에 적합한 전용 명령어를 갖고 있다.
따라서 본 연구에서는 체크섬을 계산하기 위한 별도의 전용 하드웨어를 준비하여 내부 RISC를 사용하지 않고 체크섬을 계산할 수 있도록 하는 방식을 채택하였다. 그리고 DMA 전송 과정에 체크섬을 계산할 수 있도록 하여 체크섬에 따른 오버헤드 문제를 제거할 수 있도록 하였다. 체크섬 계산 기능을 갖는 DMA 제어기는 크게 3가지 기능을 갖는다.
셋째, 어널링(Annulling) 처리 기능을 갖는 분기 명령을 채택함에 의해 분기 명령에 따른 성능 저하를 최소화하도록 하였다[9-10]. 넷째, TCP/IP 프로토콜의 다양한 마스킹 동작을 구현하기 위해 정렬된(shifted) 상수필드와 레지스터 값을 비교하여 분기하는 명령을 포함하였다. 다섯째, 프로토콜의 대부분 처리가 워드(word) 단위로 이루어지는 특성을 활용하여, 워드 기반의 하드웨어 구조를 갖고 있으며 바이트와 하프워드(halfword) 데이터는 시프트 명령을 이용하여 간접적으로 지원하도록 하였다.
첫째, 외부의 6가지 하드웨어 조건을 바탕으로 한 load-compare- &-branch명령을 사용하여, flag load, compare, branch 명령으로 구성된 기존 명령의 조합을 1/3 로 감소시켰다. 둘째, 데이터 메모리와 명령어 메모리를 분리시킨 하버드(Harvard) 구조 채택으로 대 역폭을 2배로 하는 장점과 DMA 동작 중에 데 이 터 메모리를 사용하지 않는 RISC 명령을 병렬로 수행할 수 있는 장점을 갖도록 하였다. 셋째, 어널링(Annulling) 처리 기능을 갖는 분기 명령을 채택함에 의해 분기 명령에 따른 성능 저하를 최소화하도록 하였다[9-10].
둔 분기 동작을 필요로 하였다. 따라서 이러한 동작을 효율적으로 처리하기 위한 명령어를 정의하여 하드웨어로 구현하였다. 본 연구에서 채택한 명령어의 특징은 다음과 같다.
본 연구는 TCP/IP 프로토콜을 구현하기 위한 스택 프로세서 코어를 Verilog HDL로 설계하였다. 설계된 회로는 32 비트 RISC 마이크로프로세서와 체크섬 계산 기능을 갖는 DMA와 입출력 버퍼로 구성되어 있으며, RISC 마이크로프로세서의 펌웨어(firmware) 제어 프로그램 수정을 통해 다양한 프로토콜을 구현할 수 있다.
본 연구에서는 패킷 형식 변환과 전체적인 제어는 RISC 코어가 담당하고, 데이터 이동 동작을 고속화하기 위해 DMA(Direct Memory Access)에 의한 데이터 전송 방식을 채택하였다. 단, DMA 동작 시 RISC 코아가 정지되는 대신에 데이터 메모리 (Packet Memory)를 사용하지 않은 다른 명 령이 수행 가능하도록 하였다.
1 절에서 정의한 설계 사양을 바탕으로 구현한 TCP/IP 프로토콜 스택 프로세서 코어 IP의 구조는 그림 4와 같다. 설계된 프로세서는 크게 입력 버퍼 메모리, 32 비트 RISC 코어, 체크섬 계산 기능을 갖는 DMA(Direct Memory Access) 제어기, 패킷 메모리, 프로그램 메모리와 출력 버퍼 메모리로 구성 된다.
설계하였다. 설계된 회로는 32 비트 RISC 마이크로프로세서와 체크섬 계산 기능을 갖는 DMA와 입출력 버퍼로 구성되어 있으며, RISC 마이크로프로세서의 펌웨어(firmware) 제어 프로그램 수정을 통해 다양한 프로토콜을 구현할 수 있다. 설계된 회로는 삼성 0.
둘째, 데이터 메모리와 명령어 메모리를 분리시킨 하버드(Harvard) 구조 채택으로 대 역폭을 2배로 하는 장점과 DMA 동작 중에 데 이 터 메모리를 사용하지 않는 RISC 명령을 병렬로 수행할 수 있는 장점을 갖도록 하였다. 셋째, 어널링(Annulling) 처리 기능을 갖는 분기 명령을 채택함에 의해 분기 명령에 따른 성능 저하를 최소화하도록 하였다[9-10]. 넷째, TCP/IP 프로토콜의 다양한 마스킹 동작을 구현하기 위해 정렬된(shifted) 상수필드와 레지스터 값을 비교하여 분기하는 명령을 포함하였다.
폴링(polling)에 의해 동작 개시와 중단을 하도록 단순화하였다. 여덟째, TCP/IP 프로토콜에만 사용되기 때문에, 스택의 push와 pop을 필요로 하는 함수 호출과 복귀 명령은 지원하지 않고 루프 펼침(loop unrolling) 기법을 사용하도록 하였다.
있다. 전체 TCP/IP 프로토콜을 구현하는 대신에 NoC 환경에서 TCP/IP 프로토콜 스택 동작에서 가장 많은 연산 시간이 소요되는 데이터 전송 동작과 체크섬 계산 및 프로토콜 계충 간 패킷 형식 변환 동작을 지원하는 코어 IP(Intellectual Property) 개발을 설계 사양으로 한다. 본 연구에서 개발하는 프로세서 IP가 지원하는 범위는 그림 3과 같다.
대상 데이터
TCP/IP 프로토콜용 송신 래퍼 프로세서를 검증하기 위해 우선 패킷 변환 동작과 체크섬 동작을 C 언어로 구현하여 설계된 하드웨어에 대한 테스트 데이터로 사용하였다. 설계된 TCP/IP 프로토콜 스택 프로세서는 다양한 프로토콜에 맞게 입출력 버퍼의 크기 조정이 가능하다.
성능/효과
넷째, TCP/IP 프로토콜의 다양한 마스킹 동작을 구현하기 위해 정렬된(shifted) 상수필드와 레지스터 값을 비교하여 분기하는 명령을 포함하였다. 다섯째, 프로토콜의 대부분 처리가 워드(word) 단위로 이루어지는 특성을 활용하여, 워드 기반의 하드웨어 구조를 갖고 있으며 바이트와 하프워드(halfword) 데이터는 시프트 명령을 이용하여 간접적으로 지원하도록 하였다. 여섯째, 네트워크 프로토콜과 매칭이 용이하도록 메모리에 저장된 데이터는 Big-Endian 형식과 무부호 (unsigned) 데이터 형식을 따른다.
본 연구에서 설계한 TCP/IP 프로토콜 스택 프로세서에서 체크섬 장치는 체크섬 생성과 오류 검증 기능을 모두 갖추고 있어서 TCP/IP 프로토콜 스택의 송신부와 수신부에 적용 가능하다. 즉 내부 RISC 마이크로프로세서의 프로그램 메모리를 동작 모드에 따라 적절히 프로그램하게 되면 송신과 수신 동작에 사용할 수 있다.
본 연구의 RISC는 기존 RISC 프로세서와 달리 다양한 분기 명령을 갖고 있어서, 분기에 따르는 오버 헤드를 최소화한다. 즉 입출력 버퍼, DMA 제어기의 외부 상태 플래그를 체크하는 동작의 경우, 기존 RISC 의 경우 상태 레지스터의 load, compare, branch 등의 3개의 명령으로 구성되는더】, 본 연구의 RISC 프로세서의 경우 단일 비트 플래그인 경우 1개의 명령으로 처리 가능하므로 3배 이상 코드 크기를 줄일 수 있다.
본 연구의 경우 DMA 동작이 완료된 2 클록 사이클 후에 체크섬 결과가 생성됨으로 기존 방식에 비해 약 2배 향상됨을 알 수 있다.
설계된 TCP/IP 프로토콜 스택 프로세서는 Xilinx FPGA XCV1000E-6HQ240C 디 바이스에 download한 결과 약 28 MHz의 동작 주파수를 가짐을 확인하였다. 그림 13은 설계된 프로세서에 대한 PCI 버스 기반의 FPGA 검증 시스템을 나타낸다.
설계된 회로는 32 비트 RISC 마이크로프로세서와 체크섬 계산 기능을 갖는 DMA와 입출력 버퍼로 구성되어 있으며, RISC 마이크로프로세서의 펌웨어(firmware) 제어 프로그램 수정을 통해 다양한 프로토콜을 구현할 수 있다. 설계된 회로는 삼성 0.35[im 표준셀 라이브러리를 갖고 Synopsys Tool 로 합성한 결과 최대 167MHz로 동작 가능함을 확인하였으며, lKword의 payload 데이터를 전송하는데 약 1454 클럭으로 소요되어, 전송율은 약 590Mbytes로 나타났다. 따라서 기존 네트워크 프로세서에 TCP/IP 프로토콜의 일부 기능을 담당하는 보조 프로세서 IP로 사용될 수 있을 것으로 판단된다.
둘째, ATM과는 달리 데이터 필드의 크기가 가변적이므로 재결합 버퍼(reassembly buffer)를 浦해 많은 메모&가 필요하다. 셋째 많은 연결 관계 (connection)를 하드웨어로 관(3) 하는 것이 복잡한 상태 와 메모리 문제로 불가능하다. 따라서 TCP 프로토콜의 경우 OS 관련 동작, 상태 관리, 타이머 관리, 연결 관리, Sliding Window 버퍼 제어 등은 소프트웨어에 의해 처리하고, 순수한 데이터 전송 동작과 체크섬 계산 / 검사 동작은 하드웨어로 처리하는 하드웨어-소프트웨어 공동 설계 (Hardware-Software Codesign) 전략이 바람직하다.
단 FPGA 구현을 위해 TCP/IP의 payload 크기를 26 words(256 bytes) 로 제한하여 시뮬레이션을 수행하였耳. 이러한 Verilog HDL에 대한 검증 완료 후에 IDEC 삼성 0.35um 표준 셀 라이브러리로 Synopsys 툴로 합성한 결과, 응용 프로그램에 따라 가변 크기를 갖는 입출력 버퍼를 제외한 내부 RISC 코어와 체크섬 기능을 갖는 DMA 장치는 각각 약 22,000 과 1, 680 게이트로 구성되며, 최장 전달 경로가 6ns로서 최대 동작 주파수는 167 MHz를 가짐을 확인하였다. 데이터 송신 속도는 사용된 데이터 수에 영향을 받기 때문에 정확히 계산하는 것은 어렵지만, N words 데이터를 송신하기 위해 필요한 TCP/IP 프로토콜 스택 프로세서의 클럭 사이클 수를 계산하여 전송율을 식 (1), (2)과 같이 근사적으로 유도할 수 있다.
여섯째, 네트워크 프로토콜과 매칭이 용이하도록 메모리에 저장된 데이터는 Big-Endian 형식과 무부호 (unsigned) 데이터 형식을 따른다. 일곱째, RISC 코어는 TCP/IP 동작에만 사용되고 다른 범용 기능을 수행하지 않기 때문에 태스크 스위칭(Task Switching)을 필요로 하는 인터럽트를 지원하지 않고. 폴링(polling)에 의해 동작 개시와 중단을 하도록 단순화하였다.
헤드를 최소화한다. 즉 입출력 버퍼, DMA 제어기의 외부 상태 플래그를 체크하는 동작의 경우, 기존 RISC 의 경우 상태 레지스터의 load, compare, branch 등의 3개의 명령으로 구성되는더】, 본 연구의 RISC 프로세서의 경우 단일 비트 플래그인 경우 1개의 명령으로 처리 가능하므로 3배 이상 코드 크기를 줄일 수 있다. 그리고 32 비트 RISC 코어는 MIPS-X RISC 프로세서와 유사하게 5 단계의 파이프라인 구조를 갖고 있다[10].
그 이유는 다음과 같다. 첫째, TCP 프로토콜의 경우 패킷 당 하나의 타이머와 상태도가 유지되어야 하므로 하드웨어로 모든 타이머와 상태 정보를 구현하는 것은 거의 불가능하다. 둘째, ATM과는 달리 데이터 필드의 크기가 가변적이므로 재결합 버퍼(reassembly buffer)를 浦해 많은 메모&가 필요하다.
본 연구에서 채택한 명령어의 특징은 다음과 같다. 첫째, 외부의 6가지 하드웨어 조건을 바탕으로 한 load-compare- &-branch명령을 사용하여, flag load, compare, branch 명령으로 구성된 기존 명령의 조합을 1/3 로 감소시켰다. 둘째, 데이터 메모리와 명령어 메모리를 분리시킨 하버드(Harvard) 구조 채택으로 대 역폭을 2배로 하는 장점과 DMA 동작 중에 데 이 터 메모리를 사용하지 않는 RISC 명령을 병렬로 수행할 수 있는 장점을 갖도록 하였다.
후속연구
35[im 표준셀 라이브러리를 갖고 Synopsys Tool 로 합성한 결과 최대 167MHz로 동작 가능함을 확인하였으며, lKword의 payload 데이터를 전송하는데 약 1454 클럭으로 소요되어, 전송율은 약 590Mbytes로 나타났다. 따라서 기존 네트워크 프로세서에 TCP/IP 프로토콜의 일부 기능을 담당하는 보조 프로세서 IP로 사용될 수 있을 것으로 판단된다. 향후 완전한 고성능의 TCP/IP 스택 프로세서 구현을 위해 슬라이딩 윈도우, 하드웨어 스택, 타이머 모듈, 재결합 모듈에 대한 하드웨어 연구 및 설계된 하드웨어와 호스트상의 소프트웨어 모듈 간의 인터페이스 및 통합 연구가 필요하다.
따라서 기존 네트워크 프로세서에 TCP/IP 프로토콜의 일부 기능을 담당하는 보조 프로세서 IP로 사용될 수 있을 것으로 판단된다. 향후 완전한 고성능의 TCP/IP 스택 프로세서 구현을 위해 슬라이딩 윈도우, 하드웨어 스택, 타이머 모듈, 재결합 모듈에 대한 하드웨어 연구 및 설계된 하드웨어와 호스트상의 소프트웨어 모듈 간의 인터페이스 및 통합 연구가 필요하다.
참고문헌 (11)
L. Roberts, 'Internet Still Growing Dramatically Says Internet Founder' http://www. caspiannetworks.com/press/release./08.15.01.shtmI, Aug, 2001
Marc Necker, Didier Contis, and David Schimmel, 'TCP-Stream Reassembly and State Tracking in Hardware', Proc. of the 10th Annual IEEE Symposium on Field-Programmable Custom Computing Machines(FCCM'02), pp.1-2, 2002
W. Doeringer, and D. Dykeman, etc. 'A Survey of Light Weight Transport Protocols for High-Speed Networks,' IEEE Trans. on Communications, vol. 38, no.11, pp.2025-2039, Nov., 1990
Axel Jantsch, 'Networks on Chip', ESD Laboratory, Royal Institute of Technology, Sweden, http://www.imit.kth.sejinfo/FOFU
Florian Braun, John Lockwood, Marcel Waldvogel, 'Layered Protocol Wrapper for Internet Packet Processing in Reconfigurable Hardware,' Technical Report, WUC5-01-10, Department of Computer Science, Washington University, July, 2001
Tsai Chi Huang, 'UDP/TCPlIP Packet Processing Using a Superscalar Microprocessor', Ph.D Thesis, Georgia Institute of Technology, December, 2000
Paul Chow, The MIPS-X RISC Microprocessor, Kluwer Academic Publisher, 1989
R. Braden, 'Computing the Internet Checksum', rfc1071, 1988
※ AI-Helper는 부적절한 답변을 할 수 있습니다.