ITQ Excel 2010 자격증 한번에 따기 [교안]
하이브리드 TCP/IP Offload Engine을 위한 하드웨어 기반 송수신 가속기의 설계 및 구현
(ITQ) 시험 과 목 코드 문제유형 시험시간 수험번호 성 명 한글엑셀 1122 A 60분 문제지를 받는 즉시 응시하고자 하는 과목의 문제지가 맞는지 확인하여야 합니다. 파일명은 본인의 “수험번호-성명”으로 입력하여 답안폴더(내문서\ITQ\)에 하나의 파일로 저장 해야 하며, 답안문서 파일명이 “수험번호-성명”과 일치하지 않거나, 답안파일을 전송하지 않아 미제출로 처리될 경우 실격입니다(예 : 내문서\ITQ\12345678-홍길동.xlsx). 작성을 마치면 파일을 저장하고, ‘답안 전송’ 버튼을 선택하여 감독위원 PC로 답안을 전송 하십시오. 수험생 정보와 저장한 파일명이 다를 경우 전송되지 않으므로 주의하시기 바랍니다. 답안 작성 중에도 주기적으로 저장하고 답안을 전송하여야 문제 발생을 줄일 수 있습니다. 작업 한 내용을 저장하지 않고 전송할 경우 이전에 저장된 내용이 전송되오니 이점 유의하시기 바랍 니다. 답안문서는 지정된 경로 외의 다른 보조기억장치에 저장하는 경우, 지정된 시험 시간 외에 작성 된 파일을 활용할 경우, 기타 통신수단(이메일, 메신저, 네트워크 등)을 이용하여 타인에게 전달 또는 외부 반출하는 경우는 부정 처리합니다. 시험 중 부주의 또는 고의로 시스템을 파손한 경우는 수험자가 변상해야 하며, <수험자 유의사항> 에 기재된 방법대로 이행하지 않아 생기는 불이익은 수험생 당사자의 책임임을 알려 드립니다. 문제의 조건은 MS-Office 2007/2010버전으로 설정되어 있으니 유의하시기 바랍니다. 시험을 완료한 수험자는 답안파일이 전송되었는지 확인한 후 감독위원의 지시에 따라 문제지를 제출하고 퇴실합니다. 수험자 유의사항 온라인 답안 작성 절차 수험자 등록 ⇒ 시험 시작 ⇒ 답안파일 저장 ⇒ 답안 전송 ⇒ 시험 종료 문제는 총 4단계, 즉 제1작업부터 제4작업까지 구성되어 있으며 반드시 제1작업부터 순서대로 작성하고 조건대로 작업하시오. 모든 작업시트의 A열은 열 너비 ‘1’로, 나머지 열은 적당하게 조절하시오. 모든 작업시트의 테두리는 ≪출력형태≫와 같이 작업하시오. 해당 작업란에서는 각각 제시된 조건에 따라 ≪출력형태≫와 같이 작업하시오. 답안 시트 이름은 “제1작업”, “제2작업”, “제3작업”, “제4작업”이어야 하며 답안 시트 이외의 것 은 감점 처리됩니다. 각 시트를 파일로 나누어 작업해서 저장할 경우 실격 처리됩니다. 그림 삽입 문제의 경우 반드시 「내문서\ITQ\Picture」폴더에서 정확한 파일을 선택하여 삽입하십시오. 답안 작성요령 [제 1 작업] 표 서식 작성 및 값 계산 (240점) ☞ 다음은 ‘고객 대출관리 현황’에 대한 자료이다. 자료를 입력하고 조건에 맞도록 작업하시오. ≪출력형태≫ ≪조건≫ ○ 모든 데이터의 서식에는 글꼴(맑은고딕, 11pt), 맞춤은 ≪출력형태≫를 참조하시오. ○ 제 목 ⇒ 모서리가 둥근 직사각형과 바깥쪽 그림자 스타일(오프셋 아래쪽)을 이용하여 작성하고 “♠ 고객 대출관리 현황”을 입력한 후 다음 서식을 적용하시오 (글꼴-맑은고딕, 16pt, 검정, 굵게, 채우기-주황). ○ 임의의 셀에 결재란을 작성하여 카메라 또는 그림복사 기능을 이용하여 붙이기 하시오(단, 원본 삭제). ○「B4:J4, G14, I14」영역은 ‘주황’으로 채우기 하시오. ○ 유효성 검사를 이용하여 「H14」셀에 고객명(「C5:C12」영역)이 선택 표시되도록 하시오. ○ 셀 서식 ⇒「H5:H12」영역에 셀 서식을 이용하여 숫자 뒤에 ‘개월’을 표시하시오(예 : 24개월). ○「F5:F12」영역에 대해 ‘대출금액’으로 이름정의를 하시오. ◉ ⑴~⑹ 셀은 반드시 주어진 함수를 이용하여 값을 구하시오(결과값을 직접 입력하면 해당 셀은 0점 처리됨). ⑴ 대출분류 ⇒ 대출번호의 첫 글자가 1이면 ‘기업자금’, 2이면 ‘주택담보’, 3이면 ‘가계대출’, 4이면 ‘신용대출’로 구하시오(CHOOSE, LEFT 함수). ⑵ 비고 ⇒ 정의된 이름(대출금액)을 이용하여 대출금액(단위:원)이 많은 금액이 1이 되도록 순위를 구한 후 ‘1, 2, 3’위만을 표시하고 나머지는 공백으로 표시하시오(IF, RANK 함수). ⑶ 대출이율이 5% 미만인 고객수 ⇒ 대출이율이 5% 미만인 고객의 수를 구한 결과값 뒤에 ‘명’을 표시하시오(COUNTIF 함수, & 연산자)(예 : 3 → 3명). ⑷ 납부방법이 자동이체인 대출금액 합계 ⇒ 조건은 입력데이터를 이용하시오(DSUM 함수). ⑸ 대출기간이 가장 긴 고객명 ⇒ (INDEX, MATCH, MAX 함수) ⑹ 대출금액 ⇒「H14」셀에서 선택한 고객명에 대한 대출금액(단위:원)을 표시하시오(VLOOKUP 함수). ⑺ 조건부 서식을 이용하여 ‘대출금액(단위 : 원)’ 셀에 데이터 막대 스타일(빨강)을 최소값 및 최대값으로 적용하고, 수식을 이용하여 대출기간이 ‘36’개월 이상인 행 전체에 다음 서식을 적용하시오(글꼴 : 파랑). 오피스 2007/2010버전용 [제 2 작업] 필터 및 서식 (80점) ☞ “제1작업” 시트의「B4:H12」영역을 복사하여 “제2작업” 시트의「B2」셀부터 모두 붙여넣기를 한 후 다음의 조건과 같이 작업하시오. ≪조건≫ ⑴ 고급필터 - 납부방법이 ‘지로’가 아니면서 대출금액(단위:원)이 ‘50,000,000’ 이하인 데이터만 추출하시오. - 조건 위치 : 「B13」셀부터 입력하시오. - 복사 위치 : 「B18」셀부터 나타나도록 하시오. ⑵ 표 서식 - 고급필터의 결과셀에 채우기 없음으로 설정한 후, ‘표 스타일 밝게 12’의 서식을 적용하시오. [제 3 작업] 피벗테이블 (80점) ☞ “제1작업” 시트를 이용하여 “제3작업” 시트에 조건에 따라 ≪출력형태≫와 같이 작업하시오. ≪조건≫ ⑴ 대출일자 및 납부방법별 고객명의 개수와 대출금액(단위:원)의 평균을 구하시오. ⑵ 대출일자를 그룹화하고, 레이블이 있는 셀 병합 및 가운데 맞춤으로 설정하시오. ⑶ 납부방법을 ≪출력형태≫와 같이 정렬하고, 빈 셀은 ‘**’로 표시하시오. ⑷ 행의 총합계를 지우고, 나머지 사항은 ≪출력형태≫에 맞게 작성하시오. ≪출력형태≫ [제 4 작업] 그래프 (100점) ☞ “제1작업” 시트를 이용하여 조건에 따라 ≪출력형태≫와 같이 작업하시오. ≪조건≫ ⑴ 차트 종류 ⇒ <묶은 세로 막대형>으로 작업하시오. ⑵ 데이터 범위 ⇒ “제1작업” 시트의 내용을 이용하여 작업하시오. ⑶ 위치 ⇒ “새 시트”로 이동하고, “제4작업”으로 시트 이름을 바꾸시오. ⑷ 차트 디자인 도구 ⇒ 레이아웃 1, 스타일 4을 선택하여 ≪출력형태≫에 맞게 작업하시오. ⑸ 영역 서식 ⇒ 차트 : 글꼴(맑은고딕, 11pt), 채우기 효과(질감-분홍 박엽지) 그림 : 채우기 없음 ⑹ 제목 서식 ⇒ 차트 제목 : 글꼴(맑은고딕, 굵게, 20pt), 채우기(흰색), 테두리 ⑺ 서식 ⇒ 대출금액 계열의 차트 종류를 <표식이 있는 꺾은선형>으로 변경한 후 보조축으로 지정하시오. 레이블 : 권우영의 대출금액 계열 값을 표시하고, 위치는 ≪출력형태≫와 같이 표시하시오. 눈금선 : 선 스타일-파선 축 : ≪출력형태≫를 참조하시오. ⑻ 범례 ⇒ 범례명을 변경하고 ≪출력형태≫를 참조하시오. ⑼ 도형 ⇒ ‘모서리가 둥근 사각형 설명선’을 삽입한 후 내용을 입력하시오. ⑽ 나머지 사항은 ≪출력형태≫에 맞게 작성하시오. ≪출력형태≫ 주의 ☞ 시트명 순서가 차례대로 "제1작업", "제2작업", "제3작업", "제4작업"이 되도록 할 것.
*******
하이브리드 TCP/IP Offload Engine을 위한 하드웨어 기반 송수신 가속기의 설계 및 구현 하이브리드 TCP/IP Offload Engine을 위한 하드웨어 기반 송수신 가속기의 설계 및 구현 (Design and Implementation of a Hardware-based Transmission/Reception Accelerator for a Hybrid TCP/IP Offload Engine) 요약 최근 Gbps 이상의 고속 네트워크 상에서 호스트 CPU에 많은 오버헤드를 발생시키는 TCP/IP 의 문제점을 해결하기 위해 네트워크 어댑터 상에서 TCP/IP를 처리함으로써 호스트 CPU의 작업부하를 줄이는 TCP/IP Offload Engine(TOE) 기술이 연구되고 있다. TOE의 구현 방법에는 범용 임베디드 프로 세서에서 소프트웨어로 TCP/IP를 처리하는 방법과 전용 ASIC에서 하드웨어로 TCP/IP를 처리하는 방법 이 사용되어 왔으나 소프트웨어 구현은 통신의 성능이 떨어지고 하드웨어 구현은 유연성과 확장성이 떨어 지는 문제점들을 가지고 있다. 본 논문에서는 하드웨어적인 접근 방법과 소프트웨어적인 접근 방법을 결합 한 하이브리드 TOE 구조를 제안한다. 하이브리드 TOE는 데이타 패킷의 생성과 처리와 같이 통신의 성 능에 큰 영향을 끼치는 기능들을 하드웨어로 구현함으로써 하드웨어 기반 TOE 구현에 버금가는 성능을 제공하고, 연결 설정과 같이 통신의 성능에 영향을 크게 끼치지 않는 기능들은 임베디드 프로세서 상에서 소프트웨어로 처리한다. 본 논문에서는 데이타 송수신의 성능을 높이기 위해 데이타 패킷의 생성 및 처리 등을 지원하는 하드웨어 송수신 가속기를 설계 및 구현하였다. 실험 결과 송수신 가속기를 사용한 하이브 리드 TOE는 약 19 μs의 최소 지연시간을 보였다. 그리고 6% 이하의 CPU 점유율에서 약 675 Mbps에 달하는 대역폭을 보였다. 키워드 :TCP/IP, TCP/IP Offload Engine, 하이브리드 TOE, 송수신 가속기 Abstract TCP/IP processing imposes a heavy load on the host CPU when it is processed by the host CPU on a very high-speed network. Recently the TCP/IP Offload Engine (TOE), which processes TCP/IP on a network adapter instead of the host CPU, has become an attractive solution to reduce the load in the host CPU. There have been two approaches to implement TOE. One is the software TOE in which TCP/IP is processed by an embedded processor and the other is the hardware TOE in which TCP/IP is processed by a dedicated ASIC. The software TOE has poor performance and the hardware TOE is neither flexible nor expandable enough to add new features. In this paper we designed and implemented a hybrid TOE architecture, in which TCP/IP is processed by cooperation of hardware and software, based on an FPGA that has two embedded processor cores. The hybrid TOE can have high performance by processing time-critical operations such as making and processing data packets in hardware. The software based on the embedded Linux performs operations that are not time-critical such as connection establishment, flow control and congestions, thus the hybrid TOE can have enough flexibility and expandability. To improve the performance of the hybrid TOE, we developed a hardware-based transmission/reception accelerator that processes important operations such as creating data packets. In the experiments the hybrid TOE shows the minimum latency 459 ․이 논문은 2007년 정부(교육인적자원부)의 재원으로 한국학술진흥재단의 지원을 받아 수행된 연구임 (지방연구중심대학육성사업/차세대물류IT기술 연구사업단) † 학생회원 : 부산대학교 컴퓨터공학과 hkjang@pusan.ac.kr yoodh@pusan.ac.kr †† 종신회원 : 논문접수 심사완료 : : 부산대학교 컴퓨터공학과 교수 shchung@pusan.ac.kr (Corresponding author임) 2007년 6월 13일 2007년 7월 22일 460 정보과학회논문지 : 시스템 및 이론 제 34 권 제 9 호(2007.9) of about 19 μs. The CPU utilization of the hybrid TOE is below 6 % and the maximum bandwidth of the hybrid TOE is about 675 Mbps. Key words :TCP/IP, TCP/IP Offload Engine, Hybrid TOE, Transmission/Reception Accelerator 1. 서 론 현재 TCP/IP 프로토콜은 일반적으로 운영체제에 포 함되어 호스트 CPU 상에서 처리되고 있다. 이렇게 호 스트 CPU 상에서 TCP/IP를 처리하는 방식은 Gbps 이 상의 속도를 제공하는 초고속 네트워크 환경에서는 호 스트 CPU 상에 막대한 부하(load)를 유발하여 전체 시 스템의 성능을 저하시킨다는 문제점을 가진다[1]. 또한 1 bps 속도로 TCP/IP를 처리하는 데 약 1 Hz의 CPU 클럭이 필요하므로 네트워크의 물리적인 대역폭이 10 Gbps 이상으로 높아지면 단일 호스트 CPU로는 TCP/ IP를 처리하기 어려워지는 상황이 발생할 것으로 예상 되고 있다. 이러한 문제점을 해결하는 방안으로서 호스 트 CPU가 아닌 네트워크 어댑터에서 TCP/IP를 처리하 는 TCP/IP Offload Engine(TOE) 기술이 제안되고 있 다 [2]. TCP/IP가 네트워크 어댑터 상에서 처리되면 호 스트 CPU의 입장에서는 프로토콜을 처리하는 작업 부 하가 줄어들어 실질적인 작업에 더 많은 CPU 자원을 할당할 수 있게 된다. 이는 컴퓨터 시스템의 전체적인 성능이 향상되는 효과로 이어진다. TOE를 구현하는 방식으로는 네트워크 어댑터에 탑재 한 범용 임베디드 프로세서 상에서 소프트웨어로 TCP/ IP를 처리하는 소프트웨어 TOE[3,4], 전용 ASIC을 개 발하여 하드웨어로 TCP/IP를 처리하는 하드웨어 TOE [5-9], 그리고 TCP/IP 기능 중 일부는 소프트웨어로 처 리하고 일부는 하드웨어로 처리하는 하이브리드 TOE [10-12] 등이 제안되고 있다. 소프트웨어 TOE는 하드 웨어 TOE에 비해 구현이 쉽다는 장점을 가진다. 그러 나 임베디드 프로세서는 일반적으로 호스트 CPU에 비 해 성능이 낮으므로 하드웨어 TOE에 비해 프로토콜을 처리하는 성능이 떨어진다[13]. 하드웨어 TOE는 소프트 웨어 TOE에 비해 통신의 성능은 우수하지만[14-16], 구현이 비교적 어렵고 개발에 비용이 많이 든다. 또한 TCP/IP의 상위 프로토콜까지 네트워크 어댑터 상에서 처리하려고 할 때 상위 프로토콜을 처리하는 하드웨어 모듈을 새로 개발하여 기존 TCP/IP 처리 모듈과 결합 해야 하는 어려움이 발생한다. 하드웨어 TOE와 소프트 웨어 TOE를 결합한 하이브리드 TOE는 데이타 패킷의 생성과 처리와 같이 많은 작업 부하로 인하여 임베디드 프로세서 상에서 성능을 확보하기 어려운 기능들은 하 드웨어로 구현함으로써 하드웨어 TOE에 근접하는 성능 을 제공한다. 그리고 연결 설정과 같이 통신의 성능에 영향을 크게 끼치지 않는 기능들은 임베디드 프로세서 상에서 소프트웨어로 처리함으로써 하드웨어 TOE에 비 해 비교적 구현이 쉽다는 장점을 가진다. 또한 차후 TCP/IP의 상위 프로토콜을 오프로딩하거나 새로운 기 능을 추가하기가 용이하다. 본 논문에서는 두 개의 프로세서 코어를 내장한 FPGA 상에서 하이브리드 TOE의 데이타 송수신 과정 에 필요한 주요 기능들을 처리하는 하드웨어 기반의 송 수신 가속기를 설계 및 구현하였다. 그리고 하드웨어 송 수신 가속기를 구성하는 모듈들과 프로세서 코어들의 연동을 지원하는 메커니즘을 개발하였다. 하드웨어 모듈 들은 데이타 패킷 헤더의 생성 및 처리, DMA를 사용 한 데이타 수집 및 저장 등을 담당하여 송수신 성능을 향상시킨다. 하이브리드 TOE에서 데이타 송수신 이외 의 기능들은 임베디드 리눅스 기반의 소프트웨어를 바 탕으로 처리하도록 구현하였다. 두 개의 프로세서 코어 들은 각각 송신 하드웨어 모듈과 수신 하드웨어 모듈과 결합하여 송신 기능과 수신 기능을 협력하여 처리한다. 본 논문에서는 프로세서 코어 내장형 FPGA가 장착된 TOE 네트워크 어댑터를 사용하여 하이브리드 TOE의 동작을 검증하였고, 실험을 통해 하드웨어 기반 송수신 가속기의 성능을 입증하였다. 본 논문은 다음과 같이 구성된다. 2장에서는 관련 연 구를 소개하고, 3장에서는 하이브리드 TOE의 구조와 하드웨어 기반 송수신 가속기 및 소프트웨어 모듈의 구 현에 대해 설명한다. 4장에서는 실험 결과를 제시한다. 마지막으로 5장에서는 결론과 향후 연구를 제시한다. 2. 관련연구 TOE 관련된 제품의 개발 사례 중에서 범용 임베디드 프로세서를 사용하여 소프트웨어 TOE를 구현한 사례로 는 Intel사의 PRO/1000T IP Storage Adapter[3]와 Hewlett Packard사의 시제품[4] 등이 있었다. Intel의 제품은 하드웨어 TOE에 비해 성능이 크게 떨어지고 [13], HP의 제품은 시제품으로 끝나서 현재 제품의 생 산이 이루어지지 않고 있다. 1000Base-T 규격의 Gigabit Ethernet와 ASIC 구현 기반의 하드웨어 TOE 제품에는 Alacritech사의 SLIC technology[5], QLogic사의 QLA4050C 어댑터[6], Broadcom사의 BCM5706 controller[7] 등이 있다. ASIC 구현과 10 Gigabit Ethernet에 기반한 하드웨어 하이브리드 TCP/IP Offload Engine을 위한 하드웨어 기반 송수신 가속기의 설계 및 구현 TOE의 구현 사례로는 Chelsio사의 Terminator 3 칩 [8], NetEffect사의 NE010 어댑터[9] 등이 있다. 각종 자료에 의하면 하드웨어 기반 TOE 제품들은 대체로 100 MB/s 정도의 높은 단방향 대역폭을 보유하고 있다 [13-15]. 그러나 하드웨어 TOE 구현은 전용 ASIC 구 현에 많은 시간과 비용이 소모되고 구현된 하드웨어에 서 수정하거나 개선할 사항이 발생할 때마다 새로운 ASIC을 개발해야 한다는 단점을 가진다. 또한 RDMA (Remote Direct Memory Access) 등과 같은 상위 프 로토콜까지 네트워크 어댑터에서 오프로딩하여 처리하 려는 요구가 발생할 때에도 효과적으로 대응하기 어렵다. 근래에는 FPGA와 임베디드 프로세서를 기반으로 하 여 하이브리드 TOE 구현을 연구한 논문들이 발표되고 있다[10-12]. 하이브리드 방식의 TOE 구현에 대해 연 구한 Wu와 Chen의 논문에서는 IP, ARP, ICMP 프로 토콜들을 하드웨어로 처리하고 TCP는 1개의 PowerPC 코어를 사용하여 소프트웨어로 처리하는 구조를 가지고 있다[12]. 이 연구의 결과를 보면 통신 성능이 TCP까지 하드웨어로 처리하는 우리의 구현보다 크게 떨어진다. 3. 송수신 가속기에 기반한 하이브리드 TOE 구현 본 장에서는 두 개의 임베디드 프로세서 코어와 하드 웨어 기반 송수신 가속기를 결합한 하이브리드 TOE에 서 하드웨어 구현과 소프트웨어 구현에 대해 설명한다. 그림 1은 듀얼 프로세서 코어 내장형 FPGA와 이에 기 반한 하이브리드 TOE 네트워크 어댑터의 구조를 나타 낸다. 본 논문에서는 두 개의 PowerPC 405 코어를 내 461 장한 Xilinx사의 Virtex-II Pro FPGA를 사용하여 하이 브리드 TOE를 구현하였다. 두 개의 프로세서 코어들은 각각 송신 처리를 분담하는 TX 프로세서와 수신 처리 를 분담하는 RX 프로세서로 사용되며, 프로세서간의 인 터페이스를 사용하여 상대방 프로세서에게 작업을 요청 할 수 있다. 이렇게 두 프로세서 코어가 송수신 과정을 분담하여 처리하는 메커니즘은 송신 프로세스와 수신 프로세스 사이의 스케줄링에 의한 작업 전환 오버헤드 를 제거하여 호스트 CPU에 비해 성능이 떨어지는 임베 디드 프로세서의 단점을 극복할 수 있다. 각 코어들은 PLB(Processor Local Bus) 버스를 통해 FPGA 외부에 연결된 64MB 용량의 SDRAM과 연결되고, OPB (Onchip Peripheral Bus) 버스를 통해 32MB 용량의 플래 시 메모리에 연결된다. 플래시 메모리에는 각 프로세서 에서 운용될 소프트웨어들의 압축 이미지가 저장되고, SDRAM에서는 실제 소프트웨어가 운용된다. 각 코어들 은 300 MHz의 코어 클럭, 100 MHz의 PLB 클럭, 50 MHz의 OPB 클럭으로 동작한다. FPGA 내부의 하드웨어 모듈들은 호스트 인터페이스, TOE 모듈, GbE(Gigabit Ethernet) 컨트롤러 등으로 구성된다. 호스트 인터페이스는 64bit/66MHz PCI 컨트 롤러를 내장하여 호스트 CPU와 TOE 모듈 사이에서 인터페이스를 담당한다. GbE 컨트롤러는 기가빗 이더넷 MAC/PHY 칩과의 인터페이스를 담당하여 이더넷 패킷 의 송신과 수신을 처리한다. TOE 모듈은 하이브리드 TOE에서 하드웨어 구현의 핵심으로 데이타 송수신 기 능 등을 처리하는 하드웨어 가속 모듈과 프로세서 코어 들과의 인터페이스를 담당하는 HW/SW 인터페이스로 그림 1 하이브리드 TOE의 구조 462 정보과학회논문지 : 시스템 및 이론 제 34 권 제 9 호(2007.9) 구성된다. TOE 모듈은 TX 프로세서와 RX 프로세서의 PLB 버스에 양쪽으로 연결되며, TX 프로세서와 RX 프로세서는 메모리에 접근하는 방식으로 TOE 모듈에 접근할 수 있다. 송신 파트(TX 프로세서 및 송신 하드 웨어 모듈)와 수신 파트(RX 프로세서 및 수신 하드웨어 모듈)는 TOE 모듈 내의 연결 정보 버퍼를 통해 TCP 연결(connection)에 대한 정보를 공유한다. TCP 연결 정보는 TCP, IP, MAC 헤더를 생성하거나 처리하는 데 필요한 정보들을 유지하며, 본 논문에서는 TCP 연결 정보를 저장하는 메모리 버퍼 블록에 대해 Connection Control Block(이하 CCB)이라는 이름을 사용한다. 임베디드 리눅스 기반의 소프트웨어는 하드웨어의 동 작들을 제어하고 하드웨어로 구현되지 않은 기능들, 즉 연결 설정, ARP/ICMP 처리, 흐름 제어, 혼잡 제어, 재 전송 등 데이타 송수신의 성능에 영향을 크게 끼치지 않는 나머지 동작들을 처리한다. 임베디드 리눅스를 사 용함으로써 차후 패킷 필터링 등의 보안 함수나 상위 프로토콜의 오프로딩 등 새로운 기능들을 소프트웨어에 추가하기가 쉬우므로 본 논문의 하이브리드 TOE 구조 는 높은 유연성과 확장성을 가진다. 3.1 하드웨어 송수신 가속기의 구조 그림 2는 하이브리드 TOE를 위한 송수신 가속기를 구성하는 하드웨어 모듈들의 구조를 보여준다. 송수신 처리를 위한 하드웨어 모듈은 크게 송신 버퍼 관리 모 듈, 수신 버퍼 관리 모듈, 헤더 생성 모듈, 수신 처리 모 듈, ACK 패킷 생성 모듈로 구성된다. 송신 버퍼는 GbE 컨트롤러로 전송할 패킷을 저장하는 역할을 한다. 프로세서에서 생성된 컨트롤 패킷, 헤더 생성 모듈에서 생성된 데이타 패킷, ACK 생성 모듈에서 생성된 ACK 패킷을 버퍼에 저장하고 GbE 컨트롤러로 전송하는 과 정을 관리하는 것이 송신 버퍼 관리 모듈의 역할이다. 수신 버퍼는 GbE 컨트롤러에서 받은 패킷을 저장하는 역할을 한다. 수신 버퍼 관리 모듈은 수신 버퍼에 저장 된 패킷에서 호스트 CPU의 메인 메모리로 데이타를 DMA 전송하는 역할을 한다. 헤더 생성 모듈은 데이타 패킷의 헤더를 생성하여 송신 버퍼에 저장되어있는 데 이타 페이로드의 앞에 붙여 데이타 패킷을 완성하는 역 할을 한다. 수신 처리 모듈은 수신 버퍼에 저장된 패킷 을 검사하고 패킷을 분류하는 역할을 하며, 수신 패킷이 데이타 패킷인 경우 데이타를 분리하는 일을 맡는다. 마 지막으로 ACK 패킷 생성 모듈은 수신된 데이타 패킷 의 검사 결과 아무 이상이 없을 경우 ACK 패킷을 생 성하여 송신 버퍼에 저장하는 역할을 한다. TOE 네트워크 어댑터를 사용한 통신의 진행 과정은 다음과 같다. 호스트 CPU의 사용자 프로그램이 TOE를 사용한 통신을 요청하면 이 요청은 호스트 운영체제의 TCP/IP 프로토콜 스택을 거치지 않고 TOE 어댑터의 호스트 인터페이스에 직접 전달된다. 호스트 인터페이스 는 이 요청을 TOE 모듈로 전달하고, TOE 모듈에서 하드웨어와 소프트웨어를 연동하여 요청된 작업을 처리 한다. 연결 설정 작업은 TX, RX 프로세서의 역할이다. TX 프로세서가 연결 설정과 관련된 패킷을 송신 버퍼 에 저장하고 전송 명령을 내리면 GbE 컨트롤러를 통해 전송된다. 반대로 수신 버퍼에 들어온 패킷이 연결 설정 과 관련된 패킷이라면 수신 처리 모듈을 통해 이것을 확인하고 RX 프로세서에 인터럽트를 걸어서 처리하도 록 한다. 요청된 작업이 데이타의 송신인 경우 TOE 모듈은 원 격 노드로 전송할 데이타를 호스트 CPU의 메인 메모리 에서 DMA 읽기를 사용하여 가져와서 송신 버퍼에 저 장한다. 데이타 복사가 끝나면 헤더 생성 모듈을 통해서 TCP 헤더, IP헤더, MAC 헤더를 생성하고 각 헤더를 그림 2 하드웨어 기반 송수신 가속기의 구조 하이브리드 TCP/IP Offload Engine을 위한 하드웨어 기반 송수신 가속기의 설계 및 구현 복사해온 데이타 페이로드의 앞에 붙인다. 패킷 생성이 끝나면 GbE 컨트롤러에 패킷의 전송을 요청한다. 기가 빗 이더넷 MAC/PHY 칩에 의해 패킷 전송이 끝나면 호스트 CPU에 인터럽트를 걸어서 송신이 완료되었음을 알린다. 수신 과정에서는 송신 과정의 역순으로 수신 패 킷이 처리된다. GbE 컨트롤러를 통해 패킷이 들어오면 수신 처리 모듈이 패킷을 검사한다. 패킷 검사를 통해 데이타 패킷이 확인되면 패킷에서 데이타를 분리해내고 DMA 쓰기를 통해서 호스트 메모리로 데이타를 복사한 다. 데이타 복사가 끝나면 호스트 CPU에 인터럽트를 걸어서 데이타의 수신을 알린다. 3.2 송신 가속 모듈 송수신 가속을 위한 하드웨어 모듈은 헤더 생성 모듈, 수신 처리 모듈, ACK 패킷 생성 모듈로 구성된다. 헤 더 생성 모듈은 데이타 패킷의 송수신시 하드웨어 모듈 이 헤더를 만들고 패킷을 전송함으로써 송신 속도를 증 가한다. 반대로 수신 패킷의 검사와 ACK패킷 전송을 각각 수신 처리 모듈과 ACK 패킷 생성 모듈이 처리하 여 수신 속도를 증가한다. 그림 3은 송신 가속을 위한 헤더 생성 모듈의 내부 구조를 보여 준다. 헤더 생성 모듈은 헤더 정보 제어 모 듈, 연결 정보 버퍼, CCB 캐시, 헤더 생성 제어 모듈, 송신버퍼 인터페이스로 구성된다. 연결 정보 버퍼는 헤 더 생성을 위한 연결 정보를 저장하고 있는 역할을 맡 는다. CCB 캐시는 헤더 생성에 사용할 연결 정보를 연 결 정보 버퍼에서 읽어와 임시로 저장하는 역할을 맡는 다. 연결 정보 버퍼와 CCB 캐시의 입출력 제어를 담당 하는 것이 헤더 정보 제어 모듈의 역할이다. 헤더 생성 제어 모듈은 CCB 캐시로부터 연결정보를 읽어 헤더를 생성하는 역할을 한다. 헤더 생성이 끝나면 헤더를 송신 버퍼로 복사해야 하는데, 이 역할을 맡는 것이 송신 버 퍼 인터페이스이다. 헤더 생성 모듈의 동작 과정은 다음과 같다. 송신 버 퍼 관리 모듈에서 전송 데이타의 복사가 끝나면 데이타 463 체크섬, 길이 등의 정보와 전송 관련 정보가 헤더 생성 모듈로 전달된다. 헤더 정보 제어 모듈은 전송 관련 정 보를 바탕으로 연결 정보 버퍼에서 관련 연결 정보를 찾고 이것을 CCB 캐시로 복사한다. 복사가 끝나면 헤 더 생성 제어 모듈이 CCB 캐시와 데이타 체크섬, 길이 정보를 바탕으로 TCP 헤더, IP 헤더, MAC 헤더를 생 성한다. 헤더 생성이 끝나면 송신버퍼 인터페이스를 통 해서 송신버퍼로 전송 요청을 하고, 송신버퍼 관리 모듈 이 허락하면 헤더를 송신버퍼로 복사한다. 3.3 수신 가속 모듈 및 ACK 처리 모듈 그림 4는 수신 처리 및 ACK 생성 모듈의 내부 구조 를 보여준다. 수신 처리 및 ACK 생성 모듈은 수신 패 킷 검사 모듈, 수신 패킷 헤더 레지스터 파일, 체크섬 계산 모듈, ACK 번호 계산 모듈, ACK 패킷 생성 모 듈, 송신 버퍼 인터페이스로 구성된다. 수신 패킷 검사 모듈은 수신 패킷의 각각의 헤더 필드를 레지스터에 저 장하고 패킷을 검사하고 처리하는 역할을 맡는다. 수신 패킷 헤더 레지스터 파일은 수신 패킷의 헤더 정보를 수신 처리 및 ACK 패킷 생성을 위해서 저장하고 있는 레지스터 파일이다. 체크섬 계산 모듈은 수신 패킷의 체 크섬 검사와 ACK 패킷의 체크섬 생성하기 위해 TCP 체크섬과 IP 체크섬을 계산하는 역할을 맡는다. 수신 패 킷의 데이타 길이 계산과 ACK 번호 계산 등은 ACK 번호 계산 모듈에서 처한다. ACK 패킷 생성 모듈은 수 신 패킷 헤더 레지스터 파일과 체크섬 계산 모듈, ACK 번호 계산 모듈의 데이타를 바탕으로 ACK 패킷을 생 성하는 역할을 한다. 생성된 ACK 패킷을 송신 버퍼로 전송하는 것은 송신 버퍼 인터페이스가 처리한다. 수신 처리 및 ACK 생성 모듈의 동작 과정은 다음과 같다. GbE 컨트롤러에서 수신 버퍼로 데이타가 들어오 면 수신 패킷 검사 모듈은 각각의 헤더 필드를 분리하 여 수신 패킷 헤더 레지스터 파일에 저장한다. 이때 체 크섬 계산 모듈은 TCP 체크섬과 IP 체크섬을 계산한 다. 수신 버퍼에 저장이 끝나면 체크섬 검사와 시퀀스 그림 3 송신 가속을 위한 하드웨어 모듈의 구조 그림 4 수신 가속을 위한 하드웨어 모듈의 구조 464 정보과학회논문지 : 시스템 및 이론 제 34 권 제 9 호(2007.9) 번호 검사 등을 수행한다. 검사 결과를 바탕으로 ERROR, ARP, TCP_SYN(연결 설정을 위한 패킷), TCP_DATA (데이타 패킷)의 네 가지 패킷으로 분류하고 결과를 수 신 버퍼 관리 모듈에게 알린다. 검사 결과에 따른 처리 는 수신 버퍼 관리 모듈이 맡는다. 에러일 경우 수신 버 퍼의 패킷을 버리고, ARP와 TCP_SYN 패킷은 RX 프 로세서로 인터럽트를 걸어 처리한다. TCP_DATA 패킷 이 수신된 경우 호스트 CPU에서 recv() call 명령이 내 려왔는지를 먼저 확인한다. Recv() call 명령을 확인한 후에 패킷에서 데이타를 추출하여 호스트 메모리로 전 송한다. 수신 버퍼 관리 모듈에서 수신 패킷의 처리가 진행되 는 동안 ACK 패킷 생성 모듈에서는 ACK 패킷의 생성 을 진행한다. 페이로드 길이 계산 결과로 ACK 번호를 계산하고, 수신 패킷 헤더 레지스터의 데이타를 바탕으 로 ACK 패킷의 체크섬을 계산한다. ACK 번호 계산과 체크섬 계산이 끝나면 ACK 패킷을 생성하고, 송신 버 퍼 인터페이스를 통해서 송신 버퍼에 저장한다. 저장된 ACK 패킷은 송신버퍼 관리 모듈에 의해서 GbE 컨트 롤러를 통해 전송된다. 3.4 하이브리드 TOE를 위한 소프트웨어 모듈 본 구현에 사용되는 소프트웨어 모듈은 TCP/IP 프로 토콜 스택을 내장한 임베디드 리눅스(커널 버전 2.4.18), 디바이스 드라이버, 응용 프로그램의 세 가지로 범주로 구성된다. TX 프로세서와 RX 프로세서는 각자 독자적 인 SDRAM 메모리 상에서 임베디드 리눅스 커널과 디 바이스 드라이버, 응용 프로그램을 운용한다. 송수신 경 로의 분리를 위한 커널은 동일한 커널 이미지를 기본으 로 하고, 각 프로세서의 역할에 따라 일정한 함수들만을 수행하도록 구현한다. 디바이스 드라이버와 응용 프로그 램은 커널 이미지와 분리된 램 디스크 형태로 탑재되어 각 프로세서에 의해 수행된다. 커널 이미지와 램 디스크 는 플래시 메모리에 압축된 형태로 저장되어 있다가 TOE 어댑터에 전원이 들어와 부팅이 시작될 때 압축이 풀리면서 SDRAM으로 복사된다. 본 논문에서 제안하는 송수신 분리형 하이브리드 TOE 구조에서는 TCP 연결 에 대해 송신과 수신이 각각 다른 프로세서에 의해 관 리되어야 하며, 두 프로세서들은 흐름 제어 등의 TCP 연결 관리를 위해 필요한 정보들을 공유해야 한다. 본 논문에서는 TX 프로세서, RX 프로세서, 하드웨어 모듈 들 사이에서 연결 정보의 공유를 위해 하드웨어 모듈에 서 제공하는 CCB (Connection Control Bolck) 단위의 연결 정보 버퍼를 사용한다. 4. 실험 및 분석 본 논문에서는 하이브리드 TOE의 성능을 실험하기 위해 AMD Opteron 246 CPU와 1 GB의 메모리를 장 착한 2 대의 컴퓨터를 사용하였으며, 각 컴퓨터에는 2.6.19 커널 버전의 x86-64 아키텍처용 리눅스를 운영 체제로 사용하였다. 리눅스 커널 설정에서 타이머의 주 파수 해상도(timer frequency resolution)은 1,000 Hz로 설정하고 preemption 기능은 사용하지 않도록 설정하였 다. 본 논문의 실험에서는 메인 보드에 장착된 Marvell 사의 GbE 컨트롤러(TG3)와 데이타 송수신 기능을 하 드웨어 가속 모듈로 구현한 하이브리드 TOE의 성능을 비교하였다. 그림 5는 일반 GbE 어댑터(TG3)와 하이브리드 TOE 의 최소 지연시간을 비교하고 있다. 일반 GbE 어댑터는 최소 지연시간이 약 43 μs로 측정되었으며, 하이브리드 TOE는 약 19 μs의 최소 지연시간을 보였다. 실험 결과 하드웨어로 데이타 패킷을 생성하고 처리하는 하이브리 드 TOE가 지연시간 측면에서 우수한 모습을 보였다. 그림 6은 호스트 CPU 상에서 측정된 하이브리드 TOE와 일반 GbE 어댑터의 CPU 점유율을 비교하고 있다. 하이브리드 TOE의 CPU 점유율은 6%를 넘지 않 아 일반 GbE 어댑터에 비해 약 10배에 가까운 향상을 보였다. 그림 7은 일반 GbE 어댑터와 하이브리드 TOE의 통 신 대역폭을 비교하고 있다. 이 실험에서 하이브리드 TOE는 최대 약 675Mbps의 대역폭을 보였다. 이 결과 는 하이브리드 TOE 구조에서 1 Gbps의 속도로 TCP/ IP를 처리하기에는 부족한 성능을 가지는 범용 임베디 드 프로세서를 사용하더라도 데이타 송수신을 가속시키 는 하드웨어의 보조와 소프트웨어/하드웨어 연동 메커니 즘을 통해 높은 TCP/IP 처리 성능을 가질 수 있음을 보여준다. 특히 16 KB 미만의 데이타를 전송하는 경우 하이브리드 TOE의 단방향 대역폭은 일반 GbE 어댑터 의 성능을 능가하였다. 그림 5 일반 GbE 어댑터와 하이브리드 TOE의 지연시 간 비교 하이브리드 TCP/IP Offload Engine을 위한 하드웨어 기반 송수신 가속기의 설계 및 구현