KR100947618B1 - 데이터 처리 시스템 - Google Patents

데이터 처리 시스템 Download PDF

Info

Publication number
KR100947618B1
KR100947618B1 KR1020080084050A KR20080084050A KR100947618B1 KR 100947618 B1 KR100947618 B1 KR 100947618B1 KR 1020080084050 A KR1020080084050 A KR 1020080084050A KR 20080084050 A KR20080084050 A KR 20080084050A KR 100947618 B1 KR100947618 B1 KR 100947618B1
Authority
KR
South Korea
Prior art keywords
data
input
output
processing
processing module
Prior art date
Application number
KR1020080084050A
Other languages
English (en)
Other versions
KR20100025335A (ko
Inventor
김법중
김선미
김홍주
안병준
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020080084050A priority Critical patent/KR100947618B1/ko
Priority to US12/434,240 priority patent/US20100057953A1/en
Publication of KR20100025335A publication Critical patent/KR20100025335A/ko
Application granted granted Critical
Publication of KR100947618B1 publication Critical patent/KR100947618B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/409Mechanical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 발명은 데이터 처리 시스템에 관한 것으로서, 데이터를 처리하는 적어도 한 종류의 프로세서를 갖는 적어도 하나의 프로세싱 모듈과, 외부의 매체로부터 제공된 입력 데이터를 분류 및 버퍼링하여 각 프로세싱 모듈 중 입력 데이터의 처리가 가능한 프로세싱 모듈로 입력하여 처리되도록 하고, 각 프로세싱 모듈에서 처리된 출력 데이터를 분류 및 버퍼링하여 외부로 출력하는 데이터 입출력 장치를 포함한다. 이에 의해, 프로세싱 모듈의 추가나 변경이 용이하므로, 프로세싱 자원의 통합과 가변성을 높여 증가된 입출력 데이터의 양에 대응할 수 있으며, 새로운 서비스 지원 및 장비의 업그레이드 비용을 최소화할 수 있을 뿐만 아니라, 프로세싱 유지 보수의 어려움을 감소시키고 고장에 대한 대응능력을 높일 수 있다.
Figure R1020080084050
데이터, 처리, 프로세싱 모듈, 프로세서, 메타데이터, 대역폭, 선별, 플로우

Description

데이터 처리 시스템{Data Processing System}
본 발명은 데이터 처리 시스템에 관한 것으로서, 보다 상세하게는, 프로세싱 자원의 추가 및 변경이 용이하고, 프로세싱 자원의 변경시 데이터 분산이 용이한 데이터 처리 시스템에 관한 것이다.
본 발명은 정보통신부 및 정보통신연구진흥원의 패킷-광 통합 스위치 기술 개발의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2008-S-009-01, 과제명: 패킷-광 통합 스위치 기술 개발].
일반적으로 PC, 통신환경, 모바일 단말 등 임베디드 기기가 내장된 기기나 장비 등에서 데이터의 흐름을 제어, 관리, 통제, 처리하기 위해서는 그에 상응하는 프로세싱 자원이 필요하다. 여기서, 프로세싱 자원에는 데이터를 처리하기 위해 필요한 프로세서의 연산능력, 각종 메모리의 용량, 채널, 입출력 대역폭, 데이터 통로인 IO의 채널 및 대역폭, OS/드라이버/응용 소프트웨어 등의 소프트웨어 요소의 성능 등이 포함된다.
근래 통신장비, PC, 모바일 단말, 임베디드 환경의 각종 기기 등의 경우, 송수신되어 처리되어야 할 데이터의 양이 기하급수적으로 늘어나고 있으며, 데이터 처리에 필요한 프로세싱 자원의 소비도 이에 비례하여 늘어나고 있다. 이에 따라, 데이터 처리를 위해 필요한 하드웨어 기기의 고성능화, 고집적화가 진행되고 있고, 다양한 장치 및 방법이 동원되고 있다.
이렇게 고속의 데이터 처리와 더불어 다양하고 복잡한 응용 서비스를 지원하기 위해, 이에 적합한 하드웨어 기기들이 출시되고 있으나, 시장에서 특정 서비스가 자리를 잡지 못하고 사장되는 경우에는 해당 서비스에 관련되어 개발된 기기들도 사장되면서 개발에 소요된 노력과 비용이 허사가 되는 예가 많다.
하드웨어 기기 및 디바이스들에는 특정 작업에 최적화되어 있고 특정 작업만이 가능한 하드웨어, 어떠한 작업도 지원가능하나 특정 작업에 최적화되어 있지 아니한 범용 프로세서, 특정 서비스 또는 응용 범주내에서 일정 수준의 가변성을 보장하는 특화된 프로세서 등이 있다. 그러나, 이러한 하드웨어 기기 및 디바이스들은, 시장의 변화 및 새로운 서비스의 출현에 따른 변경 사항을 반영하는 데 있어 기기 자체의 한계나 활용방법의 미비함에 의해 많은 곤란을 겪고 있다. 특히, 특정 응용 서비스에 특화된 하드웨어의 경우, 서비스 자체가 쇠퇴되면, 하드웨어가 무용지물이 될 수 있어, 사업자가 특정 서비스 지원을 위한 하드웨어의 개발을 주저하는 원인이 되고 있다. 일정 수준의 가변성을 제공하는 하드웨어도 지배적인 서비스/장비 사업자의 시장 점유로 인해 기대한 수익이 감소하면 하드웨어의 공급이 원활하지 않게 되고, 이에 따라, 새로운 사업자가 서비스 지원을 위해 사용할 수 있는 하드웨어 선택폭을 줄어들어, 해당 하드웨어가 점점 시장에서 설 자리를 잃게 되는 악순환을 되풀이하고 있다.
한편, 근래 저가의 고성능 범용 프로세서가 출시되고 있는데, 이러한 고성능 범용 프로세서는 여러 종류의 코어가 내장되어 하나 이상의 작업을 병렬 처리할 수 있다. 또한, 모바일 환경, PC 환경, 통신 환경, 자동차 환경 등 특정 환경에서 요구되는 쓰임새 높은 IO나 프로세싱 자원을 보유한 범용 프로세서들이 출현하고 있으며, 이러한 범용 프로세서들은 그 사용과 운용에 따라 전용 하드웨어보다 더 나은 기능 및 서비스 지원이 가능하다. 특히, 새로운 기능의 추가나 업그레이드와 같이 변화가 필요한 환경에서 가변이 용이한 구조를 가진 프로세서의 활용도가 점점 부각되고 있으나, 범용 프로세서 하나의 성능과 자원으로 지원할 수 없는 기능을 구현해야 하거나 이미 제작되어 사용되고 있는 장치나 장비에서 프로세싱 자원을 추가하거나 변경하고자 할 경우에는 프로세서의 성능이나 쓰임새가 아닌 프로세싱 자원의 수용성 내지 이식성이 문제가 된다.
자동차, 통신장비, 선박, 비행기 등은 기능 모음별로 특화되어 있는 블록으로 구성되어 있고, 각 블록은 각종 세부 기능을 지원하는 모듈로 이루어지는 경우가 많다. 이 모듈은 최소의 자원으로 최대의 효과를 발휘할 수 있어야 하고, 유지 보수가 용이해야 하며, 운용 중의 고장 대응능력이 좋고, 업그레이드가 용이해야 한다. 특히 응용 서비스 및 기능의 추가 및 변경이 쉽도록 하기 위해서는 프로세싱 자원의 변경이 필요한데, 이를 위해서는 프로세싱 자원의 교체와 변경이 용이한 구조이어야 한다.
예를 들어, 통신장비의 라우터의 경우, 라우터의 데이터 입출력 속도의 증가는 데이터 처리의 증가를 의미하고, 이는 프로세싱 자원의 더 많은 소비를 유발한 다. 또한, 새로운 종류의 데이터 처리 서비스를 지원하기 위해서는 기존의 단순 데이터 포워딩에서 요구되었던 프로세싱 자원보다 한 차원 높은 프로세싱 자원의 지원과 함께 새로운 서비스에 일정 수준 특화된 프로세싱 자원을 제공할 필요가 있다. 즉, 기존 서비스의 지원을 유지하면서 새로운 서비스를 수용하기 위해서는 기존 프로세싱 자원에 더하여 새로운 자원의 추가가 필요하고, 이를 위해서는 복수의 프로세싱 자원도 쉽게 수용할 수 있고, 일의 할당과 변경이 용이하게 이루어질 수 있는 장치와 방법이 필요하다.
상기 목적은, 새로운 서비스의 지원을 위한 프로세싱 자원의 추가 및 변경이 용이하며, 추가 또는 변경된 프로세싱 자원으로 작업의 할당 및 변경이 용이하도록 하는 데이터 처리 시스템을 제공하는 것이다.
상기 목적은, 데이터를 처리하는 적어도 한 종류의 프로세서를 갖는 적어도 하나의 프로세싱 모듈; 및, 외부의 매체로부터 제공된 입력 데이터를 분류 및 버퍼링하여 상기 각 프로세싱 모듈 중 적어도 하나의 프로세싱 모듈에 할당하여 처리되도록 하고, 상기 각 프로세싱 모듈에서 처리된 출력 데이터를 분류 및 버퍼링하여 외부로 출력하는 데이터 입출력 장치;를 포함하는 것을 특징으로 하는 데이터 처리 시스템에 의해 달성될 수 있다.
본 데이터 처리 시스템에서는, 프로세싱 모듈의 추가나 변경이 용이하므로, 프로세싱 자원의 통합과 가변성을 높여 증가된 입출력 데이터의 양에 대응할 수 있으며, 새로운 서비스 지원 및 장비의 업그레이드 비용을 최소화할 수 있을 뿐만 아니라, 프로세싱 유지 보수의 어려움을 감소시키고 고장에 대한 대응능력을 높일 수 있다. 또한, 프로세싱 모듈 상호 간에 역할이나 메모리의 상태 등에 대한 정보를 공유하도록 구성하고, 호스트 브릿지 장치와 프로세싱 모듈에서 입력 데이터 및 출력 데이터의 종류(플로우)에 따라 구분함으로써, 데이터를 처리할 프로세싱 모듈이 나 프로세서의 할당이 용이하다.
이하, 도면을 참조하여 본 발명을 상세히 설명한다.
본 데이터 처리 시스템에서는, 프로세싱 모듈의 추가 및 변경이 용이하고, 데이터 입출력장치와 프로세싱 모듈 간의 정보 공유로 인해, 프로세싱 모듈의 추가 및 변경시 데이터 입출력장치에서 데이터 분산이 가능하다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템의 구성블럭도이다.
본 데이터 처리 시스템은, 데이터를 송수신하고 버퍼링을 수행하는 데이터 입출력 장치(10)와, 데이터 입출력 장치(10)로부터 제공받은 데이터의 처리, 정렬, 연산을 수행하는 복수의 프로세싱 모듈(30a~30n)과, 데이터 처리 시스템의 확장을 위한 스위칭 연결장치(70)를 포함한다.
데이터 입출력 장치(10)는, 입출력되는 데이터의 물리적인 처리를 수행하는 물리계층부(11)와, 프로세싱 모듈(30a~30n)과 접속되며 데이터를 버퍼링하는 호스트 브릿지 장치(15)를 포함하며, 물리계층부(11)와 호스트 브릿지 장치(15)는 하나의 물리적인 장치로 구현될 수도 있고 별개의 물리적인 장치로 구현될 수도 있다.
물리계층부(11)에는, 유무선 매체와 연결되어 데이터 입출력 장치(10)로 데이터를 입력하거나 데이터 입출력 장치(10)로부터의 데이터를 출력하는 하나 이상의 데이터 라인 접속장치(5a~5n)가 연결되어 있다.
호스트 브릿지 장치(15)는, 직렬 또는 병렬의 인터페이스를 통해 프로세싱 모듈(30a~30n)과 데이터를 송수신하며, 각각의 인터페이스가 모두 같은 방식을 사용할 수도 있고, 여러 종류의 인터페이스 방식이 사용될 수도 있다. 예를 들어, 호스트 브릿지 장치(15)와 프로세싱 모듈(30a~30n)은, 직렬방식의 PCI-Express 또는 sRIO(serial Rapid IO)를 사용하거나, 병렬 방식의 PCI나, SPI 및 XAUI를 사용하거나, 기타 사용자 정의 내지 표준화된 인터페이스를 사용할 수 있다.
각 프로세싱 모듈(30a~30n)은, 프로세서(40a~40n), 메모리(50a~50n), 연결 접속부(45a~45n)를 포함한다.
각 프로세싱 모듈(30a~30n)은, 데이터 처리용 프로세싱 자원의 지원을 하며, 각 프로세싱 모듈(30a~30n)은, 상호 내용과 형태가 상이할 수 있다. 예를 들어, 특정 데이터가 인증을 요하는 기능을 필요로 하는 경우, 프로세싱 모듈(30a~30n)에 범용 프로세서(40a~40n) 대신 인증전문 기능을 탑재한 프로세서(40a~40n)를 구비하여 인증 요청 데이터를 해당 프로세싱 모듈(30a~30n)에서 처리하도록 할 수 있다. 또한 고속의 신호처리를 요하는 데이터의 경우, DSP(Digital Signal Processing) 기능을 구비한 프로세서(40a~40n)를 구비하도록 하고, 일반적인 프로세싱 기능만으로 충분히 처리가능한 데이터의 경우에는 범용프로세서(40a~40n)를 구비하여 데이터를 처리하도록 할 수도 있다.
한편, 프로세서(40a~40n)는 입출력되는 데이터의 정렬, 연산, 처리를 수행하는 단일 코어 내지 멀티 코어가 내장되어 있으며, 하나의 프로세서(40a~40n)내에는 이종의 멀티 코어, 단일 종류의 멀티 코어, 단일 코어 등의 코어가 하나 이상이 구비될 수 있다. 그리고 하나의 프로세싱 모듈(30a~30n)은 단일 종류 또는 여러 종 류의 프로세서(40a~40n)가 하나 이상 구비될 수도 있다.
이렇게 다양한 종류의 프로세서(40a~40n)가 구비되거나 다양한 종류의 프로세싱 모듈(30a~30n)이 구비되는 경우, 기존의 데이터 처리 기능을 일관성 있게 유지하기 위해, 프로세서(40a~40n) 및 메모리(50a~50n) 등의 하드웨어 구성차이를 OS, 드라이버, 응용 소프트웨어를 이용하여 극복함으로써, 전체 데이터 처리에 일관성과 다양성을 지원할 수 있다. 이에 따라, 다양한 하드웨어 및 프로세싱 자원의 수용이 가능하며, 그 지원 기능의 범주를 폭넓게 가변할 수 있다. 뿐만 아니라, 운용중에 프로세싱 모듈(30a~30n)의 교체가 가능하여 고장에 용이하게 대응할 수 있을 뿐만 아니라, 이로 인해, 프로세싱 자원의 확대 및 업그레이드를 용이하게 수행할 수 있다.
메모리(50a~50n)는 데이터를 보관하며, 하나 이상 구비된다. 프로세서(40a~40n)에 따라 멀티 메모리 채널(41a,41b,41c)을 구비할 수 있으며, 이렇게 멀티 메모리 채널(41a,41b,41c)을 갖는 프로세서(40a~40n)를 구비한 프로세싱 모듈(30a~30n)은 입력데이터의 종류에 따라 메모리 채널(41a,41b,41c)과 저장위치를 달리할 수 있다. 이렇게 멀티 메모리 채널(41a,41b,41c)을 갖는 경우, 운용중에 프로세싱 모듈(30a~30n)을 교체/변경/추가할 경우, 미리 설정된 상위의 프로세서(40a~40n) 또는 상위의 프로세싱 모듈(30a~30n)이 전체 프로세싱 자원과 데이터 처리 정책 등을 토대로, 각 프로세싱 모듈(30a~30n)에 대한 입력데이터의 할당 및/또는 배분을 조절할 수 있다. 마찬가지로, 고장 프로세싱 모듈(30a~30n)이 발생하는 경우에도 고장 프로세싱 모듈(30a~30n)로 배분된 데이터를 정상상태의 다른 프 로세싱 모듈(30a~30n)로 분배할 수 있다.
한편, 각 프로세싱 모듈(30a~30n)은 데이터 처리 시스템의 운용 중, 성능의 개선이나 고장에 의해 프로세싱 모듈(30a~30n)의 투입 및 교체가 용이하도록 플러그앤플레이(Plug and Play) 기능을 지원한다.
이를 위해, 프로세싱 모듈(30a~30n)과 데이터 입출력 장치(10)를 연결하는 연결 접속부(45a~45n)가 마련되어 있다. 연결 접속부(45a~45n)은 데이터 처리 시스템에서 구비할 수 있는 최대한의 프로세싱 모듈(30a~30n)의 개수만큼 구비될 수 있다. 이러한 연결 접속부(45a~45n)는 상시 데이터 입출력 장치(10)와 연결되어 있으므로, 프로세싱 모듈(30a~30n)의 고장이나 업그레이드 등으로 인해 프로세싱 모듈을 교체하거나 새로이 장착시키는 경우, 프로세싱 모듈(30a~30n)을 연결 접속부(45a~45n)에 접속시키는 것만으로 프로세싱 모듈(30a~30n)의 셋팅이 완료된다.
이러한 각 프로세싱 모듈(30a~30n)은, 데이터 입출력 장치(10)와 물리적으로 분리된 형태 또는 일체로 되어 있는 형태로 구성될 수도 있고, 이 두 가지가 혼용된 형태로 구성될 수도 있다.
한편, 스위칭 연결장치(70)는, 스위치 연결 호스트 브릿지 장치(71)와, 스위치 정합장치(73)를 포함한다. 스위치 연결 호스트 브릿지 장치(71)는, 직렬 또는 병렬 인터페이스(75a~75n)를 통해 각 프로세싱 모듈(30a~30n)의 연결 접속부(45a~45n)과 연결되어 데이터를 상호 입출력한다. 스위치 정합장치(73)는 이웃하는 타 프로세싱 모듈과 연결되어 데이터 처리 시스템을 확장할 수 있도록 한다. 따라서, 데이터 라인 접속장치(5a~5n)의 수가 많고, 처리할 데이터의 양이 많을 때, 스위치 연결장치(70)를 이용하여 다른 프로세싱 모듈, 데이터 입출력 장치를 더 연결하여 데이터 처리 시스템을 확장할 수 있다.
도 2는 본 발명의 다른 실시예에 따른 데이터 처리 시스템의 구성도로서, 도 1의 스위치 연결장치를 구비하지 아니한 데이터 처리 시스템의 일 실시예를 보이고 있다.
도 2에 도시된 바와 같이, 본 실시예의 데이터 처리 시스템은, 데이터 입출력 장치(10)와 복수의 프로세싱 모듈(30a~30n)을 구비한다. 이러한 구성의 데이터 처리 시스템은, 데이터 입출력 장치(10)에 연결된 데이터 라인 접속장치(5a~5n)의 수가 적고, 처리할 데이터의 양이 많지 않을 때 구성할 수 있다. 본 실시예의 데이터 입출력 장치(10)와 각 프로세싱 모듈(30a~30n)은, 도 1과 구성 및 역할이 동일하므로, 반복되는 설명은 생략하기로 한다.
도 3은 도 1의 프로세싱 모듈 간의 역할배분 및 메시지 경로를 나타낸 구성블럭도이다.
도 1에 도시된 각 프로세싱 모듈(30a~30n)은, 도 3에 도시된 구성을 가질 수 있으며, 이러한 구성에 의해 상호 정보 교환이 가능하다. 도 3에 따르면, 각 프로세싱 모듈(30a~30n)은 각각 수행가능한 역할에 대한 정보인 역할 정보(35a,35b,35c)를 가지고 있으며, 각 프로세싱 모듈(30a~30n)은 상호 메시지 교환을 통해 역할 정보의 공유가 가능하도록 제어 메시지 경로(60,65)가 구축되어 있다.
제어 메시지 경로(60,65)는, 각 프로세싱 모듈(30a~30n) 간에 제어 메시지, 상태 메시지 등을 교환하기 위한 통로로서, 입출력 데이터가 전달되는 데이터 경로와 구분해서 구축하거나, 호스트 브릿지 장치(15)의 중계기능을 이용하여 데이터 경로를 통해 제어 메시지 경로(60,65)를 구축할 수 있으며, 이 두 가지 통로를 함께 제어 메시지 경로(60,65)로 사용할 수 있다. 다시 말해, 제어 메시지 경로(60,65)는, 별도의 내부 연결장치를 이용하여 구축하는 방법과, 데이터 입출력 장치(10) 및/또는 스위칭 연결장치(70)와의 데이터 송수신을 위한 데이터 경로를 이용하여 구축하는 방법과, 양 방법을 병행하는 방법이 있다. 여기서, 내부 연결장치로는 이더넷 채널과 이더넷 스위치를 사용할 수도 있고, 직렬방식의 PCI-Express 또는 sRIO(serial Rapid IO)를 사용하거나, 병렬 방식의 PCI나, SPI 및 XAUI를 사용하거나, 기타 사용자 정의 내지 표준화된 인터페이스를 사용할 수도 있다.
한편, 데이터 경로를 이용하여 제어 메시지 경로를 구축하는 경우, 데이터 경로를 통해 프로세싱 모듈(30a~30n) 간의 제어 메시지가 전송되면, 호스트 브릿지 장치(15)는 제어 메시지가 프로세싱 모듈(30a~30n)간의 내부 데이터임을 인지하고, 이를 해당 프로세싱 모듈(30a~30n)로 전달한다. 또한, 스위칭 연결장치(70)의 중계를 통해 프로세싱 모듈(30a~30n) 간의 내부 메시지를 송수신할 수도 있음은 물론이다.
한편, 프로세싱 모듈(30a~30n)의 역할에는, 시스템제어 역할(SYS)과, 패킷 프로세싱 역할(PP)과, 외부의 망 또는 연결노드와의 제어 메시지를 처리하는 연결제어 역할(NCP)을 포함한다.
시스템제어 역할은, 데이터 입출력 장치(10)를 별도의 인터페이스 또는 데이터 경로를 통해 설정하고 제어하는 역할이다. 시스템제어 역할을 하는 프로세싱 모듈(30a,30b)은, 시스템 단위, 보드 단위, 모듈 단위에서의 제어 및 관리 기능을 수행한다.
패킷 프로세싱 역할을 하는 프로세싱 모듈(30a,30b,30c)은 데이터의 처리 및 입출력과 관련된 기능을 수행한다.
연결제어 역할을 하는 프로세싱 모듈(30a,30c)은 데이터 라인 접속장치(5a~5n)가 연결된 외부 망 또는 연결 상대와의 제어 메시지, 상태 메시지, 라우팅 메시지, 프로토콜 메시지 등의 메시지를 처리하고 송수신한다.
각 프로세싱 모듈(30a~30n)은, 이 중 하나의 역할을 수행할 수도 있고, 필요에 따라 복수의 역할을 수행할 수도 있다. 즉, 시스템제어 역할 프로세싱 모듈, 패킷프로세싱 역할 프로세싱 모듈, 연결제어 역할 프로세싱 모듈은, 각각 독립된 형태로 존재할 수도 있고, 두 가지 이상의 역할을 수행할 수 있도록 합쳐진 형태로 존재할 수 있다. 이때, 하나 이상의 프로세싱 모듈(30a~30n)을 사용할 경우, 각 프로세싱 모듈(30a~30n)의 역할 및 기능 수행에 따른 프로세싱 자원의 소모를 고려하여 각 프로세싱 모듈(30a~30n)에서 처리할 데이터의 양을 배분해야 한다. 한편, 각 프로세싱 모듈(30a~30n)이 복수의 프로세서(40a~40n)를 포함할 경우, 각 프로세서(40a~40n)별로 그 역할을 달리 수행할 수도 있고, 동일한 역할을 복수의 프로세서(40a~40n)가 함께 수행할 수도 있고, 동일한 역할을 각 프로세서(40a~40n)가 별개의 차원에서 수행할 수도 있다.
한편, 각 프로세싱 모듈(30a~30n)은, 각 프로세싱 모듈(30a~30n)이 수행할 수 있는 역할에 대한 정보를 상호 공유하며, 공유된 정보를 이용하여 프로세싱 모듈(30a~30n) 간의 내부 메시지 송수신을 통해 역할을 수행할 프로세싱 모듈(30n)을 선출한다. 임의의 프로세싱 모듈(30n)에서 역할이 수행되면, 각 프로세싱 모듈(30a~30n)은 역할 수행에 따른 프로세싱 자원의 소모 및 남은 프로세싱 자원 등에 대한 정보를 상호 공유한다.
이러한 각 프로세싱 모듈(30a~30n)간의 정보 공유 및 역할 수행을 배분하기 위해 상위 프로세서 개념을 사용할 수 있다. 상위 프로세서는 일반 프로세싱 모듈(30a~30n)과 구분된 별도의 상위 프로세싱 모듈로 마련될 수도 있고, 일반 프로세싱 모듈(30a~30n) 중 하나를 선택하여 상위 프로세싱 모듈의 역할을 수행하도록 할 수도 있다. 상위 프로세싱 모듈은, 데이터 입출력 장치(10)의 설정과 제어를 수행하며, 이때, 상위 프로세싱 모듈은, 패킷프로세싱 역할을 수행하는 프로세싱 모듈(30a~30n)을 이용하여 간접적으로 데이터 입출력 장치(10)를 설정 및 제어할 수도 있고, 상위 프로세싱 모듈의 자체 제어 경로를 이용하거나 데이터 입출력 장치(10)와 프로세싱 모듈(30a~30n)을 연결하는 호스트 인터페이스 라인을 이용할 수도 있다. 상위 프로세싱 모듈에 대한 상세한 내용은 도 9를 참조하여 후술하기로 한다.
도 4는 도 1의 데이터 처리 시스템의 일 실시예에 따른 데이터 입출력 장치와 프로세서의 구체적 구성블럭도로서, 도 4를 참조하여 데이터의 입력을 기준으로 데이터 입출력 장치 및 프로세서의 구성 및 작용을 설명한다.
도 4에는 데이터 입출력 장치(10)와, 프로세싱 모듈(30)에 포함된 하나 이상 프로세서(40) 중 하나와, 메모리(50a~50e)를 상세히 도시하고 있다. 이러한 도 4를 참조하여, 입력된 데이터가 데이터 입출력 장치(10)의 물리계층부(11)와 호스트 브릿지 장치(15)에서 처리되어 프로세싱 모듈(30)의 프로세서(40)에 연결된 메모리(50a~50e)로 전달되는 과정을 설명하면 다음과 같다.
물리계층부(11)는 데이터 라인 접속장치(5a~5n)가 연결되어 있으며, 물리계층 처리장치(12a~12n)와, 버퍼(13a~13n)가 마련되어 있다. 물리계층 처리장치(12a~12n)는 데이터 라인 접속장치(5a~5n)를 통해 입력된 데이터를 데이터 라인 매체에 의존적인 작업이 종료되도록 처리하며, 버퍼(13a~13n)는 데이터를 저장하여 호스트 브릿지 장치(15)로 제공한다.
호스트 브릿지 장치(15)는, 입력된 데이터를 종류에 따라 선별하는 데이터 선별장치(16a~16n)와, 데이터가 선별된 입출력 버퍼(20a~20n)로 입력되도록 안내하는 입출력 버퍼 선택부(19a~19n)와, 데이터를 종류에 따라 저장하는 복수의 입출력 버퍼(20a~20n)와, 인터페이스의 연결 정합기능을 수행하는 호스트 인터페이스 포트(25a~25n)를 포함한다.
데이터 선별장치(16a~16n)는, 선별테이블(18a~18n)과, 데이터 선별부(17a~17n)를 포함한다. 선별테이블(18a~18n)은 데이터 구분에 필요한 정보, 예를 들면, 입력 데이터의 헤더내용, 데이터의 내용 일부, 일부 내용들의 조합이 저장되어 있으며, 이와 함께 이러한 정보에 매칭되는 입출력 버퍼(20a~20n)의 값을 저장하고 있다.
데이터 선별부(17a~17n)는 선별테이블(18a~18n)에 저장된 정보를 참조하여 데이터를 분류하고 분류된 데이터를 입출력 버퍼 선택부(19a~19n)로 전달 및 제어하여 데이터가 상응하는 입출력 버퍼(20a~20n)로 전달될 수 있도록 한다. 이때, 데이터 선별부(17a~17n)는 입력 데이터의 목적지가 되는 프로세서(40)와 입출력 버퍼(20a~20n)를 선택하고, 각 입출력 버퍼(20a~20n)로부터 버퍼 상태정보를 입력받아 버퍼관리 및 데이터 입력제어를 수행한다. 여기서, 버퍼 상태정보는 버퍼의 잔존용량에 대한 정보를 포함하며, 잔존용량은 empty/almost full/full 등의 복수의 단계로 구분될 수 있다. 데이터 선별부(17a~17n)는, 모든 입출력 버퍼(20a~20n)의 잔존용량이 일정 임계치 이하이면, 물리계층부(11)로 입력 데이터의 흐름을 조절하기 위한 메시지를 전달한다.
예를 들어, 데이터 선별부(17a~17n)에서는 특정 종류의 입력 데이터 또는 플로우(flow)가 연달아 입력되면, 인터럽트를 발생시키거나 시그널 메시지를 전송하는 횟수를 감소 또는 하나로 만들어 프로세서(40)에 띄울 수 있다. 이때, 시그널 메시지의 전송횟수를 감소시키기 위해, 입출력 버퍼(20a~20n)의 출력제어시 임의의 입출력 버퍼(20a~20n)에 일정 수준, 즉, 버스트 송신이 가능한 수준의 데이터가 저장되어 있는 경우, 해당 입출력 버퍼(20a~20n)에서 데이터를 버스트 단위로 연달아 전송할 수 있도록 제어함으로써, 시그널 메시지가 한 번만 전송되도록 한다.
데이터 선별부(17a~17n)에서는 상술한 방법 중 선택하여 입력 데이터의 흐름을 조절할 수 있으며, 전송되는 버스트 사이즈 등을 설정할 수 있다. 이에 따라, 버스트 입력 데이터의 흐름을 최대한 방해하지 아니하고, 잦은 프로세서(40) 인터 럽트로 인해 발생할 수 있는 부작용을 최소화할 수 있다. 한편, 호스트 브릿지 장치(15)와 프로세서(40)는 시그널 메시지의 교환을 통해 호스트 브릿지 장치(15)의 각 입출력 버퍼(20a~20n)의 상태정보와 프로세서(40)의 메모리(50)의 상태정보의 공유가 가능하다.
한편, 입출력 버퍼(20a~20n)는 단일 내지 다수로 구성될 수 있으며, 각 입출력 버퍼(20a~20n)는 패킷의 종류별로 구분할 수 있도록 세분화된 하위 버퍼가 형성되어 있고, 각 입출력 버퍼(20a~20n) 내지 하위 버퍼에 상응하는 메모리(50)가 프로세서(40)에 존재한다.
입출력 버퍼(20a~20n)가 다수로 구성되는 경우, 각 입출력 버퍼(20a~20n)로부터의 출력은 각 입출력 버퍼(20a~20n) 내에서 라운드로빈(Round Robin)방식 등의 버퍼출력제어를 사용하며, 입출력 버퍼(20a~20n)의 출력 제어방식은 변경할 수 있다. 이러한 입출력 버퍼(20a~20n)는 호스트 인터페이스 포트(25a~25n)의 내부 버퍼를 사용할 경우, 생략될 수도 있다.
한편, 도 4 및 이하의 도면에서는 호스트 브릿지 장치(15)와 프로세서(40)의 사이를 연결하는 인터페이스로 PCI-Express를 사용하고 있으나, 이에 한정될 필요는 없으며, 호스트 브릿지 장치(15)와 프로세서(40)는, 상술한 바와 같이, sRIO(serial Rapid IO), 병렬 방식의 PCI, SPI 및 XAUI, 기타 사용자 정의 내지 표준화된 인터페이스를 사용할 수 있음은 물론이다.
호스트 인터페이스 포트(25a~25n)는, 호스트 브릿지 장치(15)와 프로세서(40) 간의 PCI-Express 인터페이스 연결 정합 기능을 수행하며, 보다 상세하게는 호스트 인터페이스의 물리계층, 링크계층, 전달계층, 일부 사용자계층의 기능을 수행한다. 그리고 각 입출력 버퍼(20a~20n)에서 호스트 인터페이스 포트(25a~25n)로의 출력 선택시, 복수의 입출력 버퍼(20a~20n) 간에 라운드로빈 방식을 이용하여 버퍼출력제어를 수행할 수 있으며, 버퍼출력제어 방식은 변경될 수 있음은 물론이다.
한편, 호스트 브릿지 장치(15)와 프로세서(40)는 호스트 인터페이스 라인(31)에 의해 연결되어 데이터 전송이 가능하며, 입력 데이터는 호스트 인터페이스 정합 프레임(32,33)에 실려 전송된다. 호스트 인터페이스 정합 프레임(32,33)은, 데이터 프레임(32)과 제어 프레임(33)으로 나눌 수 있으며, 데이터 프레임(32)에는 입력데이터가 실리고, 제어 프레임(33)에는 입력 데이터에 대한 부가 정보가 실린다. 이때, 데이터 프레임(32)에 입력데이터와 부가 정보가 모두 실려 보내질 수도 있다.
프로세서(40a~40n)는, 입력 데이터의 도착을 알리는 인디케이터(43)와, 메모리(50)로 제공되는 입력 데이터를 저장하는 하나 이상의 메모리 채널(41a,41b,41c)을 포함한다. 인디케이터(43)는 프로세서(40)마다 역할이 다소 상이하며, 본 실시예에서는 입력 데이터의 도착과 함께, 간략한 부가정보를 표시한다. 즉, 인디케이터(43)는 호스트 브릿지 장치(15)가 메모리(50)로 입력 데이터를 전송하면, 입력 데이터에 관련된 정보를 활성화하여 프로세서(40)에게 입력 데이터의 도착을 알리고, 프로세서(40)가 메모리(50)의 위치 및 데이터의 종류 등을 파악할 수 있도록 한다. 그러면 프로세서(40)는 메모리(50)의 해당 위치에서 데이터를 가져와 처리 할 수 있다. 메모리 채널(41a,41b,41c)은 프로세서(40) 내부 및/또는 외부 메모리를 사용할 수 있다.
메모리(50)는, 복수의 입출력데이터 블록(51a~51e)과, 복수의 메타데이터 블록(55)을 포함한다.
각 입출력데이터 블록(51a~51e)은, 입력 데이터를 종류별로 저장하며, 링버퍼를 사용할 수 있다. 각 입출력데이터 블록(51a~51e)은 입력 데이터를 저장하는 위치를 표시하는 입력포인트를 가지며, 입력포인트 정보는 호스트 브릿지 장치(15)가 자체 관리보관하는 방법과, 프로세서(40)가 호스트 브릿지 장치(15)에게 수시로 알려주는 방법이 있다. 호스트 브릿지 장치(15)가 입력포인트를 관리할 경우, 프로세서(40)는 호스트 브릿지 장치(15)로 입력포인트의 초기값을 알려주고, 호스트 브릿지 장치(15)는 입력 데이터를 입출력데이터 블록(51a~51e)에 저장할 때마다 입력포인트 값을 갱신한다.
각 메타데이터 블록(55)은, 호스트 인터페이스 정합 프레임에 실려있는 각 입력 데이터의 메타데이터 정보를 저장하며, 각 입력데이터의 부가 정보는 각 메타데이터 블록(55)에 각 입력 데이터별로 저장되거나, 입출력데이터 블록(51a~51e) 단위 또는 버스트 단위로 저장된다. 이러한 각 메타데이터 블록(55)은, 호스트 브릿지 장치(15)로부터 전달되는 시그널 메시지 또는 데이터와 함께 실려오는 시그널 정보에 기초하여 입력 데이터의 입력라인, 입출력 버퍼(20a~20n) 등의 입력소스와, 입력 데이터에 대한 메타데이터인 부가정보, 저장위치, 우선순위, 제어/사용자 메시지 구분 등을 저장하여 프로세서(40)가 입력 데이터에 대한 정보를 신속하게 파 악하여 처리할 수 있도록 지원한다.
각 메타데이터 블록(55)은 각 입출력데이터 블록(51a~51e)마다 마련되어 있으며, 프로세서(40) 내부 메모리 또는 메모리(50)에 마련될 수 있다. 이러한 메타데이터 블록(55)은 입력포인트와 출력포인트가 형성되어 있으며, 호스트 브릿지 장치(15)는 입력포인트에 입력 데이터의 정보를 기입하고, 프로세서(40)는 출력포인트로부터 처리할 데이터의 부가 정보를 출력하여 데이터의 처리에 사용한다.
이러한 도 4의 구성에서 호스트 브릿지 장치(15)가 입력데이터를 프로세서(40)로 보내는 방법에는 다음의 세 가지가 있다.
입력 데이터를 프로세서(40)에 전송하고, 전송된 입력 데이터가 어떤 종류의 데이터인지를 알리는 시그널 메시지를 프로세서(40)로 전송하는 방법과, 어떤 종류의 입력 데이터가 전송될 것인지 시그널 메시지를 먼저 프로세서(40)로 전송하고 입력 데이터를 전송하는 방법과, 입력 데이터와 시그널 메시지를 함께 프로세서(40)로 전송하는 방법이 있다.
한편, 호스트 브릿지 장치(15)는 각 입출력 버퍼(20a~20n)에 대응하는 메모리(50)의 각 입출력데이터 블록(51a~51e)을 지정하여 저장하고 있다. 따라서, 호스트 브릿지 장치(15)에서 프로세서(40)로 입력데이터와 시그널 메시지를 전송할 때, 호스트 브릿지 장치(15)는 해당 입력 데이터가 저장될 메모리(50)의 입출력데이터 블록(51a~51e)을 지정하여, 입력 데이터를 입출력 버퍼(20a~20n)로부터 인출하여 프로세서(40)로 전달한다.
그러면, 입력 데이터는 지정된 입출력데이터 블록(51a~51e)에 저장되고, 메 타데이터는 해당 입력 데이터의 메타데이터 블록(55)에 저장된다. 프로세서(40)는 인디케이터(43)로부터 입력 데이터가 도착하였다는 정보를 제공받고, 메타데이터 블록(55)에서 부가정보를 확인한 다음, 입출력데이터 블록(51a~51e)에서 해당 입력 데이터를 인출하여 데이터를 처리한다.
한편, 호스트 브릿지 장치(15)의 입출력 버퍼(20a~20n)와 프로세서(40)의 메모리(50)의 구성 및 입력 데이터 분류 여부는 다음의 몇 가지 실시예가 가능하다.
제1실시예는, 호스트 브릿지 장치(15)에서 입출력 버퍼(20a~20n)를 하나만 사용하는 경우로서, 데이터 선별장치(16a~16n)는 해당 입출력 버퍼(20a~20n)만을 가동하여 입출력 버퍼(20a~20n)의 크기를 확장시킨다. 입출력 버퍼(20a~20n)를 하나만 사용함에 따라, 프로세서(40)의 메모리(50)에는 링버퍼 형태의 입출력데이터 블록(51a~51e)을 하나 구비하며, 별도의 메타데이터 블록(55)은 구비하지 아니한다.
이러한 제1실시예에서, 입력 데이터가 입력되면, 호스트 브릿지 장치(15)는 입출력 버퍼(20a~20n)로부터 입력 데이터를 인출하여 입출력데이터 블록(51a~51e)으로 제공한다. 입출력데이터 블록(51a~51e)에는 입력 데이터의 입력지점을 가리키는 입력포인트와, 프로세서(40)가 입력 데이터의 처리를 위해 입력 데이터를 인출하는 지점을 가리키는 출력포인트가 형성되어 있다.
프로세서(40)는 호스트 브릿지 장치(15)로 메모리(50)의 입출력데이터 블록(51a~51e)의 위치와 입력포인트를 지정하여 미리 알려준다. 호스트 브릿지 장치(15)의 입출력 버퍼(20a~20n)는 프로세서(40)로부터 제공된 입력포인트의 값을 저장하며, 프로세서(40)의 입출력데이터 블록(51a~51e)으로 입력 데이터를 전송할 때마다 입력포인트의 값을 갱신한다. 프로세서(40)는 입출력데이터 블록(51a~51e)으로부터 데이터를 인출할 때마다 출력포인트의 값을 갱신한다.
한편, 입력 데이터의 전송시, 입력 데이터에 대한 메타데이터의 값도 입력 데이터와 동시에 또는 입력 데이터의 전후에 전송되며, 제1실시예에서는 메타데이터 블록(55)이 존재하지 아니하므로, 입력 데이터와 메타데이터는 모두 입출력데이터 블록(51a~51e)에 저장된다. 그리고 프로세서(40)에서 입출력데이터 블록(51a~51e)으로부터 입력 데이터를 인출할 때, 메타데이터도 함께 인출하므로, 프로세서(40)는 입력 데이터와, 데이터의 처리에 필요한 부가정보를 같이 획득할 수 있다.
제2실시예는 호스트 브릿지 장치(15)의 입출력 버퍼(20a~20n)를 복수개 준비하고, 프로세서(40)에서는 입출력 버퍼(20a~20n)의 개수만큼 복수개의 입출력데이터 블록(51a~51e)을 준비하는 경우로서, 프로세서(40)는 각 입출력 버퍼(20a~20n)가 사용할 입출력데이터 블록(51a~51e)을 지정하여 호스트 브릿지 장치(15)로 정보를 제공한다. 이러한 제2실시예에서도 메타데이터 블록(55)은 존재하지 아니한다.
호스트 브릿지 장치(15)의 데이터 선별장치(16a~16n)에서는 입력 데이터가 입력될 때마다 별도의 선별작업 없이 들어오는 순서대로 입출력 버퍼(20a~20n)를 순차적으로 지정하여 데이터를 저장한다. 그리고 각 입출력 버퍼(20a~20n)에 대응되는 입출력데이터 블록(51a~51e)으로 각 입력 데이터를 전송한다.
프로세서(40)는 인디케이터(43)에 의해 입력 데이터가 도착하였음을 인지하 면, 인디케이터(43) 또는 호스트 브릿지 장치(15)로부터의 시그널 메시지, 호스트 브릿지 장치(15)의 상태표시 레지스터 중 하나를 이용하여 입력 데이터가 어떤 입출력 버퍼(20a~20n)로부터 전송되었는지를 확인한다. 확인에 따라, 프로세서(40)는 해당 입출력 버퍼(20a~20n)에 대응되는 입출력데이터 블록(51a~51e)으로부터 데이터를 인출하여 처리한다.
입출력데이터 블록(51a~51e)은 제1실시예에서와 마찬가지로 입력포인트와 출력포인트를 가지며, 그 역할도 동일하므로, 반복되는 설명은 생략하기로 한다.
한편, 제2실시예에서 복수의 입출력데이터 블록(51a~51e)을 구성할 때, 각 입출력데이터 블록(51a~51e)은 각각 서로 다른 메모리 채널(41a,41b,41c)을 통해 액세스할 수 있도록 지정함으로써, 입력 데이터를 저장하거나 인출할 때, 발생할 수 있는 메모리 채널(41a,41b,41c)의 병목현상을 최소화할 수 있다.
제3실시예는 호스트 브릿지 장치(15)에서 하나 이상의 입출력 버퍼(20a~20n)를 가동하고, 프로세서(40)에서 각 입출력 버퍼(20a~20n)에 대응되는 입출력데이터 블록(51a~51e)을 복수개 준비한다는 점에서 제2실시예와 동일하나, 제3실시예의 데이터 선별장치(16a~16n)는 입력 데이터를 선별한다는 점에서 제1 및 제2실시예와 상이하다. 여기서, 프로세서(40)는 각 입출력 버퍼(20a~20n)에 대응되는 입출력데이터 블록(51a~51e)을 지정하여 호스트 브릿지 장치(15)로 제공한다.
데이터 선별장치(16a~16n)는 입력 데이터의 입력시마다 선별테이블(18a~18n)을 이용하여 입력 데이터를 선별하고, 선별된 입력 데이터는 내용에 따라 각각 대응되는 입출력 버퍼(20a~20n)에 저장된다. 그런 다음, 입력 데이터는 해당 입출력 버퍼(20a~20n)에 대응되는 입출력데이터 블록(51a~51e)으로 전달되어 저장된다.
프로세서(40)는 인디케이터(43)에 의해 입력 데이터의 도착을 인지하면, 인디케이터(43) 또는 호스트 브릿지 장치(15)로부터의 시그널 메시지, 호스트 브릿지 장치(15)의 상태표시 레지스터 중 하나를 이용하여 입력 데이터가 어떤 입출력 버퍼(20a~20n)로부터 전송되었는지를 확인한다.
입출력데이터 블록(51a~51e)은 제1실시예에서와 마찬가지로 입력포인트와 출력포인트를 가지며, 그 역할도 동일하므로, 반복되는 설명은 생략하기로 한다.
제3실시예에서는 호스트 브릿지 장치(15)의 데이터 선별장치(16a~16n)에서 입력 데이터를 선별작업하기 때문에, 프로세서(40)에서 입력 데이터의 종류를 파악하기 용이하므로, 데이터 처리에 필요한 프로세싱 자원을 절약할 수 있다.
한편, 제1 내지 제3실시예에서는 메타데이터 블록(55)을 구비하지 아니하였으나, 제1 내지 제3실시예의 구성에서 메타데이터 블록(55)을 구비할 경우, 입력 데이터에 대한 시그널 메시지를 메타데이터 블록(55)에 저장하여 두고, 프로세서(40)가 입력 데이터에 대한 부가 정보 등을 필요로 할 때, 메타데이터 블록(55)으로부터 부가정보를 인출하도록 할 수 있다. 이러한 메타데이터 블록(55)은, 인디케이터(43)가 프로세서(40)에 충분한 부가정보를 제공하지 못하는 경우에 사용하면, 프로세서(40)의 데이터 처리를 원활하도록 할 수 있다.
한편, 상술한 제1 내지 제3실시예 이외에도 다양한 실시예의 구성이 가능하며, 어떤 프로세서(40)를 사용하더라도 내부 구조의 차이에 의해 발생할 수 있는 제약을 최소화할 수 있다. 이러한 다양한 구조 및 지원 방법은 데이터 처리에 소 요되는 프로세싱 자원의 흡수, 수용, 이식에 탁월한 효과가 있다.
도 5는 도 4의 데이터 처리 시스템의 입력 데이터를 버퍼링 및 처리하는 과정을 보인 개념도이다. 도 5에서는, 데이터 라인 접속장치(5a~5n)를 통해 입력된 입력 데이터가 데이터의 종류에 따라 입출력 버퍼(20a~20n)에 어떻게 정렬 및 처리되는지를 보인다.
입력 데이터(200)는 미리 설정된 라인 대역폭이 허용하는 범위내에서 데이터 라인 접속장치(5a~5n)에 입력되며, 도 5에 도시된 실시예에서는 라인 대역폭이 1G로 설정되어 있으나, 데이터 처리 시스템에 따라 그 용량은 변경가능함은 물론이다. 물리계층부(11)에서 데이터 라인 매체에 의존적인 작업이 종료되도록 처리된다. 그런 다음, 호스트 브릿지 장치(15)의 입출력 버퍼(20a~20n)에 저장된다.
입력 데이터가 입출력 버퍼(20a~20n)에 저장될 때, 입출력 버퍼(20a~20n)가 복수개 마련된 경우, 데이터 선별장치(16a~16n)에서는 각 입력 데이터(210a,210b,210c)의 종류에 따라 선별하여 해당되는 입출력 버퍼(20a~20n)로 전달하여 저장한다. 이때, 입출력 버퍼(20a~20n)에도 대역폭이 설정되어 있으며, 본 실시예에서는 각 입출력 버퍼(20a~20n)의 총 대역폭이 데이터 라인 접속장치(5a~5n)와 동일하게 1G로 설정되어 있으나 이는 설계자에 의해 변경가능하다.
이렇게 입출력 버퍼(20a~20n)에 저장된 각 입력데이터는, 복수의 프로세싱 모듈(30)이 존재할 경우, 복수의 프로세싱 모듈(30) 중 하나 또는 여러 프로세싱 모듈(30)로 전달되고, 각 프로세싱 모듈(30)의 메모리 채널(41a,41b,41c)을 거쳐 메모리(50a~50n)의 입출력데이터 블록(51a~51e) 및 메타데이터 블록(55)에 저장된 다(220a,220b,220c).
각 프로세싱 모듈(30)은 내부 자원에 따라 입력 데이터를 처리할 수 있는 프로세싱 성능이 결정되고, 이러한 내부 자원에 따라 각 프로세싱 모듈(30)에 할당할 입력 데이터의 양과 대역폭을 결정한다. 각 프로세싱 모듈(30)에 입력 데이터를 배분 방법으로는, 입력 데이터를 종류별로 구분하여 입력 데이터의 종류에 따라 처리할 프로세싱 모듈(30)을 선택하는 방법, 복수의 데이터 라인 접속장치(5a~5n)에 대해 각각 프로세싱 모듈(30)을 할당하는 방법, 미리 약정된 사용자의 입력 데이터별로 할당하는 방법, 서비스별로 프로세싱 모듈(30)을 할당하는 방법, 이러한 방법 중 하나 이상을 혼용하여 사용하는 방법 등이 있다.
여기서, 프로세싱 모듈(30)별로 각 데이터 라인 접속장치(5a~5n)에 대해 대역폭을 할당받는 경우, 해당 대역폭 내에서 각 데이터 라인 접속장치(5a~5n)의 대역을 보장할 수 있도록 큐잉맵핑을 통한 흐름제어를 수행한다. 그리고 프로세싱 모듈(30)에서 각 데이터 라인 접속장치(5a~5n)를 할당하고 남는 대역폭은 추가로 입력 데이터의 종류에 따라 할당받을 수 있다.
또한, 프로세싱 모듈(30)의 선택시, 하나의 데이터 라인 접속장치(5a~5n)를 통해 입력된 입력 데이터를 하나의 프로세싱 모듈(30)로 전달할 수도 있고, 여러 데이터 라인 접속장치(5a~5n)를 통해 입력된 입력 데이터들을 하나의 프로세싱 모듈(30)로 전달할 수도 있을 뿐만 아니라, 하나의 데이터 라인 접속장치(5a~5n)를 통해 입력된 입력 데이터를 여러 프로세싱 모듈(30)에 할당할 수도 있음은 물론이다.
각 입력 데이터는 상술한 방법 중 하나를 통해 선택된 프로세싱 모듈(30)의 메모리 채널(41a,41b,41c)로 입력된다(230a,230b,230c). 각 입력 데이터는 메모리 채널(41a,41b,41c)에서 데이터 처리, 분류, 정렬, 이동 등의 과정을 거쳐 메모리(50)의 입출력데이터 블록(51a~51e)과 메타데이터 블록(55)에 저장된다. 여기서, 메모리 채널(41a,41b,41c)에서 입출력데이터 블록(51a~51e)과 메타데이터 블록(55)으로 입력 데이터가 이동되는 방법으로는, 메모리 채널(41a,41b,41c)에서 입출력데이터 블록(51a~51e)으로 직접 입력 데이터를 이동시키는 방법과, 입력 데이터의 부가 정보만을 메모리 채널(41a,41b,41c)에서 메타데이터 블록(55)으로 이동시키는 방법이 있다. 이러한 메모리 채널(41a,41b,41c)과 입출력데이터 블록(51a~51e)에는 모두 입력위치와 출력위치를 표시하는 입력포인트와 출력포인트가 형성되어 있다.
한편, 입출력데이터 블록(51a~51e)은 다수의 버퍼로 이루어질 수 있으며, 각 버퍼별로 출력 대역폭을 지정할 수 있고, 특정 데이터의 종류를 특정 버퍼에 약정하여 할당할 수도 있다.
한편, 프로세싱 모듈(30)에 범용적인 프로세서를 사용할 경우, OS, 드라이버, 응용소프트웨어 등의 소프트웨어적인 구성요소가 데이터 입출력에 대한 큐잉(Queueing) 모델과 정책을 구성한다. 하드웨어적으로 데이터 입출력에 대한 큐잉이 가능한 프로세싱 모듈(30)도 데이터 입출력 장치(10)와의 정합이 가능하면 본 데이터 처리 시스템에서의 프로세싱 모듈(30)로 사용할 수 있다.
도 6은 도 1의 데이터 처리 시스템의 일 실시예에 따른 데이터 입출력 장치 와 프로세서의 구성블럭도로서, 출력 데이터의 처리과정을 중심으로 데이터 입출력 장치와 프로세서를 구성하였다.
본 실시예에 따른 프로세서(140)는 복수의 메모리 채널(141a,141b,141c)과, 메모리(150)를 구비하며, 메모리(150)는, 출력 데이터를 저장하기 위한 입출력데이터 블록(151a~151e)과, 출력데이터의 메타데이터를 저장하기 위한 메타데이터 블록(155)을 포함한다.
프로세서(140)에서 입력 데이터의 처리가 완료되면, 데이터는 출력을 위한 정렬 또는 처리작업을 거쳐 출력 데이터의 종류별로 메모리(150)의 입출력데이터 블록(151a~151e)에 저장된다. 그리고 출력 데이터에는 메타데이터가 포함되어 있고, 메타데이터는 출력 데이터마다 생성될 수도 있고 출력 데이터의 종류별로 생성될 수도 있다. 이러한 메타데이터는 프로세서(140) 내부 또는 외부 메모리에 마련된 메타데이터 블록(155)에 저장된다. 입출력데이터 블록(151a~151e)에 저장된 출력 데이터와 메타데이터 블록(155)에 저장된 메타데이터는, 프로세서(140)의 메모리 채널(141a,141b,141c)을 거쳐 액세스할 수 있으며, 호스트 인터페이스 라인(131)을 통해 프로세서(140)로부터 호스트 브릿지 장치(115)로 전송된다. 이때, 출력 데이터와 메타데이터는 각각 데이터 프레임(132)과 제어 프레임(133)에 실려 전송되며, 메타데이터는 데이터 프레임(132)에 함께 실려 전송될 수도 있다.
호스트 브릿지 장치(115)는, 호스트 인터페이스 포트(125a), 브릿지 컨트롤 장치(126), 입출력 버퍼 선택장치(127), 입출력 버퍼(120a~120n), 라인버퍼 선택장치(119a~119n)를 포함한다.
호스트 인터페이스 포트(125a)는, 프로세서(140)로부터 호스트 인터페이스 라인(131)을 통해 호스트 브릿지 장치(115)로 제공된 출력 데이터 및/또는 메타데이터를 데이터 프레임(132) 또는 제어 프레임(133)으로부터 인출하여 해당 입출력 버퍼(120a~120n) 또는 브릿지 컨트롤 장치(126)로 전달한다.
브릿지 컨트롤 장치(126)는, 출력데이터의 메타데이터를 확인하여 출력데이터의 종류에 따라 출력데이터를 입출력 버퍼(120a~120n)로 전송하기 위한 입출력 버퍼 선택장치(127)의 출력포트(128a~128n)를 활성화한다. 브릿지 컨트롤 장치(126)는, 출력 데이터가 도착하기 전에 입출력 버퍼 선택장치(119a~119n)의 각 출력포트(128a~128n)를 활성화하는 작업을 수행함으로써, 출력 데이터가 목적하는 입출력 버퍼(120a~120n)로 전달될 수 있도록 한다. 한편, 호스트 인터페이스 포트(125a)에 의해서도 입출력 버퍼 선택장치(119a~119n)의 각 출력포트(128a~128n)를 활성화하는 작업을 수행할 수도 있다.
입출력 버퍼 선택장치(119a~119n)는 입출력 버퍼(120a~120n)에 따라 복수의 출력포트(128a~128n)를 가지며, 각 출력포트(128a~128n)는 브릿지 컨트롤 장치(126)에 의해 활성화되어 입출력 버퍼(120a~120n)로 출력 데이터를 전달한다.
각 입출력 버퍼(120a~120n)는, 출력 데이터를 물리계층부(111)로 전달하기 위해 저장하며, 각 입출력 버퍼(120a~120n)는 출력 데이터가 출력되는 데이터 라인 접속장치(105a~105n) 별로 그룹핑된다. 임의의 그룹에 속하는 입출력 버퍼(120a~120n)에는 호스트 인터페이스 포트(125a)로부터 전달된 출력 데이터를 임시 저장하고 있다가 물리계층부(111)로 전송한다. 이때, 입출력 버퍼(120a~120n) 는 라인버퍼 선택장치(119a~119n)에서 해당 입출력 버퍼(120a~120n)에 대한 큐가 열리면, 출력 데이터를 물리계층부(111)로 전송한다. 여기서, 라인버퍼 선택장치(119a~119n)를 선택하는 방법은 라운드로빈 방식 등의 버퍼출력제어 방법을 사용할 수 있으며, 이때, 버퍼출력제어 방법은 큐제어장치의 개입이 포함된 제어방식 또는 큐제어장치의 개입이 없는 제어방식으로 구분할 수 있다. 예를 들어, 임의의 출력포트로 출력 데이터를 출력할 때, 라운드로빈 방식으로 출력 데이터를 물리계층부(111)로 전달하여 출력포트(128a~128n)로부터 출력되도록 할 수도 있고, 필요에 따라 입출력 버퍼(120a~120n)에 따라 가중치를 주고 각 입출력 버퍼(120a~120n)의 출력횟수를 조절할 수도 있다.
물리계층부(111)에서는 출력 데이터를 입출력 버퍼(120a~120n)로부터 제공받아 물리계층 처리장치(112a~112n)에서 데이터 라인 매체에 의존적인 작업을 끝내고, 데이터 라인 접속장치(105a~105n)로 출력한다.
본 데이터 처리 시스템에서 출력 데이터를 출력하는 과정을 살펴보면 다음과 같다.
먼저, 프로세서(140)에서 입력 데이터를 처리하여 출력 데이터를 생성하면, 입출력데이터 블록(51a~51e)과 메타데이터 블록(155)에 각각 출력 데이터와 메타데이터를 저장한다. 그런 다음, 프로세서(140)에서 호스트 브릿지 장치(115)로 출력 데이터 및 메타데이터의 저장위치를 알려주면, 호스트 브릿지 장치(115)는 메모리 채널(141a,141b,141c)을 거쳐 해당 입출력데이터 블록(151a~151e)과 메타데이터 블록(155)으로부터 출력 데이터와 메타데이터를 인출한다. 인출된 출력 데이터와 메 타데이터는 호스트 인터페이스 라인(131)을 거쳐 호스트 인터페이스 포트(125a)를 통해 브릿지 컨트롤 장치(126)로 제공된다. 브릿지 컨트롤 장치(126)는 출력 데이터의 메타데이터를 확인하여 출력 데이터가 통과할 입출력 버퍼 선택장치(127)의 출력포트(128a~128n)를 활성화시키고, 출력 데이터는 출력포트(128a~128n)를 통해 해당 입출력 버퍼(120a~120n)로 전달된다. 입출력 버퍼(120a~120n)에 저장된 출력 데이터는 라인버퍼 선택장치(119a~119n)를 통해 물리계층부(111)로 전달된다. 물리계층부(111)에서 데이터 라인 매체에 의존적인 작업이 끝난 출력 데이터는 데이터 라인 접속장치(115a~115n)로 출력된다.
상술한 도 4와 도 6의 데이터 처리 시스템은 상호 상이한 구성을 구비한 것처럼 도시되었으나, 도 4와 도 6은 동일한 실시예의 데이터 처리 시스템을 도시하고 있다. 다만, 도 4는 입력 데이터를 중심으로 설명하고, 도 6은 출력 데이터를 중심으로 설명하기 위해, 필요치 않은 구성을 생략하고 있다. 예를 들어, 도 4에는 출력 데이터의 처리에만 사용되는 브릿지 컨트롤 장치(126)과 입출력 버퍼 선택장치(127)가 도시되지 아니하였으며, 도 6에는 데이터 선별장치(16a~16n)은 도시되지 아니하였다.
도 7은 본 발명의 다른 실시예에 따른 데이터 처리 시스템에서 출력 데이터를 버퍼링 및 처리하는 과정을 보인 개념도이다.
도 7에는 프로세싱 모듈(30)의 플로우버퍼(300a~300n,310a~310n)에서 라인출력버퍼(320a,320b)와 정합버퍼(330)를 통해 호스트 브릿지 장치(115)의 호스트 인터페이스 포트(125a)로 출력 데이터를 보내는 과정을 나타내고 있다. 여기서, 플 로우버퍼(300a~300n,310a~310n), 라인출력버퍼(320a,320b), 정합버퍼(330)는 모두 각각 미리 대역폭이 설정되어 있으며, 프로세싱 모듈(30)은 출력 데이터의 흐름을 관리할 때 플로우버퍼(300a~300n,310a~310n)의 대역폭과 라인출력버퍼(320a,320b)의 대역폭을 고려할 뿐만 아니라, 복수의 플로우버퍼(300a~300n,310a~310n)로부터 각 라인출력버퍼(320a,320b)로 전달되는 출력 데이터의 대역폭을 정의하는 라인별 대역폭을 관리 및 제어한다.
도 7의 실시예에서는 하나의 라인출력버퍼(320a,320b)에 복수의 플로우버퍼(300a~300n,310a~310n)가 할당되어 있으며, 하나의 라인출력버퍼(320a,320b)의 대역폭과, 해당 라인출력버퍼(320a,320b)에 할당된 복수의 플로우버퍼(300a~300n,310a~310n)의 대역폭이 고려되어야 한다. 이를 위해, 프로세싱 모듈(30)은 플로우버퍼(300a~300n,310a~310n)에서 출력 데이터를 라인출력버퍼(320a,320b)로 전달할 때, 할당된 라인별 대역폭안에서 플로우버퍼(300a~300n,310a~310n)별 대역폭에 맞게 출력 데이터의 전송을 제어하는 방법으로서, 라인출력버퍼(320a,320b)의 큐에 각 플로우버퍼(300a~300n,310a~310n)에 있는 출력데이터 및/또는 메타데이터를 입력할 때, 플로우별 대역폭에 상응하는 개수의 라인출력버퍼(320a,320b) 큐를 사용하도록 할당하고, 라인출력버퍼(320a,320b) 안에서 출력 데이터 및/또는 메타데이터 간의 간격을 일정하게 한다.
라인출력버퍼(320a,320b)는 프로세싱 모듈(30)의 각 플로우버퍼(300a~300n,310a~310n)에 대한 각 데이터 라인 접속 장치별 대역폭, 큐 개수, 큐당 대역폭 등의 정보를 가진다. 이 정보를 기준으로 라인출력버퍼(320a,320b)는 출력 데이터의 종류에 따라 미리 약정된 대역폭에 맞는 큐 개수를 할당하고 할당한 큐 사이의 간격을 일정하게 조절함으로써, 해당 데이터 라인 접속 장치로 출력되는 출력 데이터의 종류에 따라 약정된 대역폭을 맞춘다. 이러한 라인출력버퍼(320a,320b)는 플로우버퍼(300a~300n,310a~310n)로부터의 출력 데이터가 입력되는 위치를 표시하기 위한 입력포인트와 정합버퍼(330)로 출력되는 출력 데이터의 위치를 표시하기 위한 출력포인트를 가지고 있으며, 플로우버퍼(300a~300n,310a~310n) 별로 입력포인트를 따로 관리하고, 입력포인트에 대한 정보를 각 플로우버퍼(300a~300n,310a~310n)와 공유한다.
각 플로우버퍼(300a~300n,310a~310n)는, 정합버퍼(330)에서 큐 할당 및 큐 간격 조정에 따라 형성한 라인출력버퍼(320a,320b)의 큐 번호 내지 큐 번지의 모음인 큐 리스트와 함께 입력포인트를 보관하며, 큐 리스트에 포함된 정보에 기초하여 라인출력버퍼(320a,320b)의 입력포인트로 플로우버퍼(300a~300n,310a~310n)에 있는 출력 데이터를 입력시킨다. 각 플로우버퍼(300a~300n,310a~310n)는 데이터의 입력과 출력위치를 지정하기 위한 입력포인트와 출력포인트를 가지고 있다. 예를 들어, SA11(Service Agreement 11) 종류의 출력 데이터는 출력이 포트 7을 통해 이루어지며, 해당 출력 데이터 종류에 할당된 대역이 40Mbps 이고, 라인출력버퍼(320a,320b)의 큐 하나당 대역폭은 1Mbps 이다. 따라서, SA11 종류의 출력 데이터는 40개의 라인출력버퍼(320a,320b)의 큐가 할당되어야 하며, 출력 데이터의 간격도 큐 40개이어야 한다. 즉, 입력포인트는 큐 1번, 큐 40번, 큐 80번을 가리키게 되고, 플로우버퍼(300a~300n,310a~310n)의 출력포인트에 의해 지정된 출력 데이 터 및/또는 메타데이터를 라인출력버퍼(320a,320b)의 입력포인트가 가리키는 1번 큐, 40번 큐, 80번 큐에 입력한다.
한편, 여러 종류의 출력 데이터가 일정 간격으로 라인출력버퍼(320a,320b)의 큐를 지정하게 되면, 서로 오버랩되는 부분이 발생할 수 있으며, 이 경우에는 오버랩되는 큐 이후의 큐 중 비어있는 큐에 출력 데이터를 입력한다. 이러한 방법을 사용하면, 라인출력버퍼(320a,320b)의 출력 혼잡으로 인해 출력 데이터의 드롭(drop)이 발생하는 경우, 그 드롭을 플로우 단위로 한정할 수 있다.
정합버퍼(330)는, 라인출력버퍼(320a,320b)로부터의 출력 데이터가 호스트 브릿지 장치(115)로 전달되기 전에 일시 저장되며, 프로세싱 모듈(30)이 할당받은 라인별 대역폭에 맞추어 출력 데이터의 흐름을 관리하고 제어한다. 정합버퍼(330)는 내부에 다수의 큐를 포함하며, 정합버퍼(330)의 큐당 대역폭은 전체 큐 개수와 프로세싱 모듈(30)의 대역폭에 따라 결정된다. 정합버퍼(330)는, 라인별 대역폭에 맞게 라인출력버퍼(320a,320b)에 큐 리스트를 할당하며, 라인출력버퍼(320a,320b)는 할당받은 큐 리스트를 저장하고, 대응되는 플로우버퍼(300a~300n,310a~310n)로 큐 리스트를 제공한다.
정합버퍼(330)의 큐에 저장된 내용은 출력 데이터 자체일 수도 있고, 데이터를 지정하는 어드레스 등의 메타데이터일 수도 있으며, 정합버퍼(330)의 큐에 저장된 내용인 메타데이터인 경우 해당 출력 데이터를 전송할 때, 메타데이터로부터 출력 데이터에 대해 지정된 어드레스 정보에 따라 출력 데이터가 저장된 메모리로부터 데이터를 인출하여 호스트 인터페이스 라인으로 출력한다. 정합버퍼(330)도 라 인출력버퍼(320a,320b)와 마찬가지로 입력포인트와 출력포인트를 가지고 있으며, 입력포인트의 경우 라인출력버퍼(320a,320b)별로 따로 관리하고, 입력포인트에 대한 정보를 각 라인출력버퍼(320a,320b)와 공유한다.
한편, 플로우버퍼(300a~300n,310a~310n), 라인출력버퍼(320a,320b), 정합버퍼(330)는 프로세서 내부의 메모리에 존재할 수도 있고, 외부의 메모리에 존재할 수도 있으며, 두 메모리에 혼재되어 있을 수도 있다.
한편, 상술한 예시들에서 각 버퍼나 데이터의 용량 등의 수치는 이해를 돕기 위한 것일 뿐이며, 본 발명은 이에 한정되는 것이 아님은 물론이다.
도 8은 도 7의 따른 데이터 처리 시스템에서 프로세싱 모듈과 호스트 브릿지 장치 간의 출력 데이터 전송을 보이기 위한 구성블럭도이다.
호스트 브릿지 장치(415)는 프로세싱 모듈(430)의 정합버퍼(440)의 출력포인트가 지정한 큐로부터 출력 데이터의 메타데이터를 읽고, 출력 데이터를 메모리(450)로부터 인출한다.
이때, 호스트 브릿지 장치(415)에서 출력 데이터를 인출하는 방법은 다양하게 설계될 수 있다. 첫번째 방법은 브릿지 컨트롤 장치(426)가 주도하는 방법으로서, 정합버퍼(440)에 출력데이터의 메타데이터가 저장되어 있는 경우, 브릿지 컨트롤 장치(426)가 정합버퍼(440)의 출력포인트에 대한 정보를 가지고 있어 브릿지 컨트롤 장치(426)가 정합버퍼(440)의 해당 큐에서 메타데이터를 읽는다. 그런 다음, 브릿지 컨트롤 장치(426)는, 메타데이터가 가리키는 출력 데이터의 어드레스 값에 따라 해당 메모리(450)에서 출력 데이터를 읽어 호스트 인터페이스 라인(431)을 통 해 가져간다. 두번째 방법은 프로세싱 모듈(430)이 관여하는 방법으로서, 정합버퍼(440)에 출력 데이터의 메타데이터가 저장되어 있는 경우, 프로세싱 모듈(430)이 정합버퍼(440)의 출력포인트가 지정한 출력 데이터의 메타데이터를 브릿지 컨트롤 장치(426)로 제공하고, 브릿지 컨트롤 장치(426)에서 출력 데이터의 메타데이터로부터 출력 데이터의 메모리(450) 위치를 파악하여 해당 메모리(450) 위치에서 출력 데이터를 읽어 가져간다. 세번째 방법은 브릿지 컨트롤 장치(426)가 주도하는 방법 중 하나로서, 정합버퍼(440)에 실제 출력 데이터가 저장되어 있는 경우, 브릿지 컨트롤 장치(426)가 출력포인트에 대한 정보를 가지고 있어 정합버퍼(440)의 해당 큐에서 출력 데이터를 직접 읽어가는 방법이다. 이러한 방법 이외에도 필요에 따라 다양한 방법으로 출력 데이터를 프로세싱 모듈(430)로부터 호스트 브릿지 장치(415)로 전달할 수 있다.
호스트 브릿지 장치(415)로 전달된 출력 데이터(432)와 시그널 메시지(433)는 호스트 인터페이스 포트(425)에서 분류되어 일부 제어/상태 메시지는 브릿지 컨트롤 장치(426)로 전달되고, 출력 데이터는 도시않은 입출력버퍼 선택장치의 출력포트 중 하나로 전달된다.
한편, 이러한 출력 데이터의 전달 중, 임의의 출력포트의 버퍼가 임계치를 초과하면, 프로세싱 모듈(430)의 정합버퍼(440)의 큐에서 해당 출력포트로 할당되는 출력 데이터의 처리는 생략하고, 다음 큐로 출력포인트를 이동시켜 다른 출력포트에 할당되는 출력 데이터가 처리되도록 한다. 이를 위해, 프로세싱 모듈(430)의 프로세서는 입출력버퍼의 상태정보를 호스트 브릿지 장치(415)로부터 읽어오며, 상 태정보의 교환은 데이터 통로인 호스트 인터페이스 라인(431)을 이용할 수도 있고, 별도의 채널을 마련할 수도 있으며, 이 두 가지를 혼용할 수도 있다.
도 9는 본 발명의 또 다른 실시예에 따른 데이터 처리 시스템의 구성블럭도이다. 도 9에 도시된 실시예에서는 복수의 프로세싱 모듈(530a~530n)을 관리하는 상위 프로세싱 모듈(550)을 갖는 데이터 처리 시스템에 대해 도시하고 있으며, 하나의 데이터 라인 접속장치(505)로 출력하는 경우, 각 프로세싱 모듈(530a~530n)에 할당된 출력 대역폭을 유지하면서 출력 데이터의 출력을 유동적으로 가변할 수 있는 방법을 나타내고 있다.
본 실시예의 데이터 처리 시스템은, 복수의 프로세싱 모듈(530a~530n)과, 각 프로세싱 모듈(530a~530n)에 대한 상태정보를 갖는 상위 프로세싱 모듈(550)과, 호스트 브릿지 장치(515)를 포함한다.
상위 프로세싱 모듈(550)은, 각 데이터 라인 접속장치(505)에 대해 출력테이블(555)을 가지고 있으며, 출력테이블(555)에는 해당 데이터 라인 접속장치(505)에 대한 출력대역폭(551), 현재 사용량(552), 하나 이상의 임계치(553), 대여 마진(554) 등이 각 프로세싱 모듈(530a~530n)별로 저장되어 있다.
각 프로세싱 모듈(530a~530n)은, 패킷 프로세싱 모듈일 수 있으며, 데이터 라인 접속장치(505)로 전달되는 출력 데이터를 저장하는 라인정합버퍼(541a~541n)를 구비하고 있다. 그리고 각 프로세싱 모듈(530a~530n)은 라인정합버퍼(541a~541n)에 대한 각종 정보, 예를 들면, 출력대역폭, 현재 사용량, 임계치 등에 대한 정보를 가지며, 이러한 정보를 상위 프로세싱 모듈(550)과 공유하여 출력 테이블(555)에 저장된다.
각 프로세싱 모듈(530a~530n)의 라인정합버퍼(541a~541n)는 출력포인트를 가지고 있으며, 해당 출력포인트 위치의 큐에서 출력 데이터를 인출하여 호스트 인터페이스 라인을 통해 호스트 브릿지 장치(515)의 호스트 인터페이스 포트(525a~525n)로 전달한다.
이러한 상위 프로세싱 모듈(550)과 각 프로세싱 모듈(530a~530n)은, 제어 메시지 스위칭 장치(565)와, 제어 인터페이스 라인(560)을 통해 정보 교환 및 공유가 가능하도록 연결되며, 이러한 방법 이외에 호스트 브릿지 장치(515)를 중심으로 한 입출력 데이터의 경로를 이용하거나, 이 두 가지 방법을 혼용할 수도 있다. 여기서, 호스트 브릿지 장치(515)를 중심으로 한 입출력 데이터의 경로는, 호스트 브릿지 장치(515)와 각 프로세싱 모듈(530a~530n) 간에 데이터의 입출력을 위한 호스트 인터페이스 라인을 포함한다.
한편, 각 프로세싱 모듈(530a~530n)과 호스트 브릿지 장치(515)는, 호스트 인터페이스 라인을 통해 제어 메시지와 데이터 메시지를 주고 받으며, 제어 메시지는 각 프로세싱 모듈(530a~530n)의 라인정합버퍼(541a~541n)와 호스트 브릿지 장치(515)의 입출력버퍼를 포함한 각종 버퍼에 대한 상태정보 및 입출력 데이터의 메타데이터를 실어 나르고, 데이터 메시지는 입력 데이터와 출력 데이터를 실어 나른다.
호스트 브릿지 장치(515)의 브릿지 컨트롤 장치(526a~526n)는, 프로세싱 모듈(530a~530n)로부터 전달된 제어 메시지를 처리하고, 입출력버퍼의 상태를 파악하 여 자체 처리하거나 해당 프로세싱 모듈(530a~530n)에 입출력버퍼의 상태에 대한 정보를 제공한다.
입출력버퍼의 출력 데이터는 라운드로빈 방식 등의 버퍼출력제어방식에 의해 데이터 라인 접속장치(505)로 전달된다.
이러한 구성의 데이터 처리 시스템에서, 특정 프로세싱 모듈(530a~530n)의 데이터 라인 접속장치(505)로의 대역폭이 미리 설정된 임계치를 초과하면, 상위 프로세싱 모듈(550)은, 출력테이블(555)을 확인하여 사용량이 현저히 낮은 프로세싱 모듈(530a~530n)에서 임계치를 초과한 특정 프로세싱 모듈(530a~530n)로 대역폭을 대여한다. 예를 들어, 가장 낮은 사용량을 갖는 프로세싱 모듈(530a~530n)의 임계치에서 현재 사용량과 대여마진을 빼고 남은 만큼의 대역폭(임계치 - 현재 사용량 - 대여마진 = 대여 가능 대역폭)을 대여를 원하는 프로세싱 모듈(530a~530n)로 대여할 수 있다. 이러한 대역폭의 대여는, 상위 프로세싱 모듈(550)이 출력테이블(555)을 구비하여 각 프로세싱 모듈(530a~530n)의 라인정합버퍼(541a~541n)의 상태정보를 공유하기 때문에 가능하다.
한편, 특정 프로세싱 모듈(530a~530n)의 대역폭 사용량이 미리 설정된 임계치를 초과하였으나, 다른 모든 프로세싱 모듈(530a~530n)도 대역폭을 대여할 수 있는 상황이 아닌 경우, 프로세싱 모듈(530a~530n)은 SA(Service Agreement)를 맺은 종류의 출력 데이터는 전달하고, BF(Best Effort) 데이터인 경우에는 드롭(Drop) 시킨다. 일반적으로 SA 데이터는 이미 프로세싱 모듈(530a~530n)들의 출력포트에 대한 대역폭을 고려하여 할당되었기 때문에 드롭없이 출력될 수 있다. 따라서, 대 역폭 대여는, 특정 프로세싱 모듈(530a~530n)로 BF 데이터가 폭주하는 경우, 다른 프로세싱 모듈(530a~530n)의 대역폭을 대여할 수 있도록 하는 방법이다.
이러한 구성에 의한 데이터 처리 시스템에서는, 프로세싱 모듈을 플러그앤플레이 방식의 지원이 가능하도록 하는 동시에, 프로세싱 모듈 상호 간에 또는 상위 프로세싱 모듈과 그 밖의 프로세싱 모듈 간에 상호 역할이나 메모리의 상태 등에 대한 정보를 공유하도록 구성함으로써, 프로세싱 모듈의 교체나 변경이 용이해 졌을 뿐만 아니라, 프로세싱 모듈의 교체나 변경을 용이하게 파악할 수 있다. 이에 따라, 프로세싱 모듈의 교체나 변경에 따라 처리할 데이터의 분산을 적응적으로 수행할 수 있다. 또한, 호스트 브릿지 장치와 프로세싱 모듈에서 입력 데이터 및 출력 데이터의 종류(플로우)에 따라 구분하여 호스트 브릿지 장치의 입출력버퍼나 프로세싱 모듈의 메모리에 저장시킴으로써, 데이터를 처리할 프로세싱 모듈이나 프로세서의 할당이 용이하다.
한편, 명세서 전체에서, 어떤 부분이 다른 부분과 '연결'되어 있다고 할 때, 이는 '직접적으로 연결'되어 있는 경우뿐만 아니라, 그 중간에 다른 소자를 사이에 두고 '간접적으로 연결'되어 있는 경우도 포함한다. 또한, 어떤 구성 요소를 '포함'한다는 것은, 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이상에서 설명한 본 발명은 첨부된 도면 및 상세한 설명의 실시예에 의해 한정되는 것은 아니며, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경할 수 있다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 당업자에게 있어 명백하다 할 것이다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템의 구성블럭도,
도 2는 본 발명의 다른 실시예에 따른 데이터 처리 시스템의 구성도,
도 3은 도 1의 프로세싱 모듈 간의 역할배분 및 메시지 경로를 나타낸 구성블럭도,
도 4는 도 1의 데이터 처리 시스템의 일 실시예에 따른 데이터 입출력 장치와 프로세서의 구체적 구성블럭도,
도 5는 도 4의 데이터 처리 시스템의 입력 데이터를 버퍼링 및 처리하는 과정을 보인 개념도,
도 6은 도 1의 데이터 처리 시스템의 일 실시예에 따른 데이터 입출력 장치와 프로세서의 구성블럭도,
도 7은 본 발명의 다른 실시예에 따른 데이터 처리 시스템에서 출력 데이터를 버퍼링 및 처리하는 과정을 보인 개념도,
도 8은 도 7의 따른 데이터 처리 시스템에서 프로세싱 모듈과 호스트 브릿지 장치 간의 출력 데이터 전송을 보이기 위한 구성블럭도,
도 9는 본 발명의 또 다른 실시예에 따른 데이터 처리 시스템의 구성블럭도이다.
* 도면의 주요 부분에 대한 부호의 설명 *
10 : 데이터 입출력 장치 15 : 호스트 브릿지 장치
16a ~ 16n : 데이터 선별장치 20a ~ 20n : 입출력 버퍼
30 : 프로세싱 모듈 40 : 프로세서
50 : 메모리 51a ~ 51e : 입출력데이터 블록
55 : 메타데이터 블록

Claims (10)

  1. 입력 데이터와 출력 데이터를 종류에 따라 저장하는 복수의 입출력데이터 블록과, 상기 입력 데이터와 출력 데이터의 메타데이터가 저장되는 메타데이터 블록을 갖는 메모리 및 데이터를 처리하는 적어도 한 종류의 프로세서를 갖는 적어도 하나의 프로세싱 모듈; 및,
    외부의 매체로부터 제공된 상기 입력 데이터를 분류 및 버퍼링하여 상기 각 프로세싱 모듈 중 상기 입력 데이터의 처리가 가능한 프로세싱 모듈로 입력하여 처리되도록 하고, 상기 각 프로세싱 모듈에서 처리된 상기 출력 데이터를 분류 및 버퍼링하여 외부로 출력하는 데이터 입출력 장치;를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  2. 데이터를 처리하는 적어도 한 종류의 프로세서, 상기 프로세서에서 처리된 출력 데이터가 종류에 따라 저장되는 복수의 플로우버퍼, 임의의 외부 매체의 데이터 처리를 위해 미리 설정된 대역폭, 큐 개수, 큐당 대역폭과, 상기 출력 데이터들의 종류에 따라 큐 개수를 할당하고 큐 사이의 간격을 일정하게 조절하는 적어도 하나의 라인출력버퍼 및, 전체 큐 개수와 대역폭에 따라 상기 각 라인출력버퍼에 할당되는 큐 개수를 조절하는 정합버퍼를 갖는 적어도 하나의 프로세싱 모듈; 및,
    외부의 매체로부터 제공된 입력 데이터를 분류 및 버퍼링하여 상기 각 프로세싱 모듈 중 상기 입력 데이터의 처리가 가능한 프로세싱 모듈로 입력하여 처리되도록 하고, 상기 각 프로세싱 모듈에서 처리된 상기 출력 데이터를 분류 및 버퍼링하여 외부로 출력하는 데이터 입출력 장치;를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  3. 제 1 항 또는 2항에 있어서,
    상기 데이터 입출력 장치는, 상기 입력 데이터를 저장하는 복수의 입출력 버퍼와, 상기 입력 데이터를 종류에 따라 분류하는 데이터 선별장치와, 상기 데이터 선별장치에서 분류된 입력 데이터의 종류에 대응되는 입출력 버퍼를 선택하여 상기 입력 데이터를 저장하는 입출력 버퍼 선택부를 포함하는 호스트 브릿지 장치를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  4. 제 3 항에 있어서,
    상기 호스트 브릿지 장치는, 복수의 출력포트를 가지며, 상기 프로세싱 모듈에서 처리되어 전달된 출력 데이터를 상기 입출력 버퍼로 제공하는 입출력 버퍼 선택장치와, 상기 출력 데이터의 메타데이터를 확인하여 상기 출력 데이터가 저장될 상기 입출력 버퍼를 결정하고, 상기 입출력 버퍼에 대응되는 상기 출력포트를 활성화시켜 상기 출력 데이터가 상기 입출력 버퍼에 저장되도록 제어하는 브릿지 컨트롤 장치를 더 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  5. 삭제
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 각 프로세싱 모듈 중 하나는, 상기 각 프로세싱 모듈 중 임의의 프로세싱 모듈에서 출력 데이터의 대역폭이 임계치를 초과하면, 다른 프로세싱 모듈의 대역폭을 사용할 수 있도록 할당하는 상위 프로세싱 모듈인 것을 특징으로 하는 데이터 처리 시스템.
  7. 제 6 항에 있어서,
    상기 상위 프로세싱 모듈은, 상기 각 프로세싱 모듈의 대역폭, 현재 사용량, 임계치, 대여 마진에 대한 정보를 상기 각 프로세싱 모듈과 공유하며, 상기 대역폭에서 현재 사용량과 임계치를 빼서 대여 가능한 대역폭을 산출하는 것을 특징으로 하는 데이터 처리 시스템.
  8. 제 1 항 또는 제 2 항에 있어서,
    상기 각 프로세싱 모듈은 시스템 제어, 패킷 프로세싱, 연결제어의 역할 중 적어도 하나를 수행하며, 상기 역할에 대한 정보를 상호 공유하여 상기 역할에 따라 처리할 데이터를 분배하는 것을 특징으로 하는 데이터 처리 시스템.
  9. 제 1 항 또는 제 2 항에 있어서,
    상기 각 프로세싱 모듈에 결합되어 상기 데이터 입출력 장치와 상기 각 프로세싱 모듈을 연결하는 인터페이스가 결합되는 복수의 연결접속부를 더 포함하며;
    상기 각 프로세싱 모듈은 상기 연결접속부에 플러그앤플레이 방식으로 연결되어 추가 또는 교체가능한 것을 특징으로 하는 데이터 처리 시스템.
  10. 제 1 항 또는 제 2 항에 있어서,
    상기 각 프로세싱 모듈과, 복수의 타 프로세싱 모듈을 연결하여 데이터의 처리량을 증가시키는 스위칭 연결장치를 더 포함하며;
    상기 복수의 타 프로세싱 모듈에도 별도의 데이터 입출력 장치가 연결된 것을 특징으로 하는 데이터 처리 시스템.
KR1020080084050A 2008-08-27 2008-08-27 데이터 처리 시스템 KR100947618B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080084050A KR100947618B1 (ko) 2008-08-27 2008-08-27 데이터 처리 시스템
US12/434,240 US20100057953A1 (en) 2008-08-27 2009-05-01 Data processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080084050A KR100947618B1 (ko) 2008-08-27 2008-08-27 데이터 처리 시스템

Publications (2)

Publication Number Publication Date
KR20100025335A KR20100025335A (ko) 2010-03-09
KR100947618B1 true KR100947618B1 (ko) 2010-03-15

Family

ID=41726966

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080084050A KR100947618B1 (ko) 2008-08-27 2008-08-27 데이터 처리 시스템

Country Status (2)

Country Link
US (1) US20100057953A1 (ko)
KR (1) KR100947618B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5880451B2 (ja) * 2011-02-09 2016-03-09 日本電気株式会社 解析エンジン制御装置
WO2012172691A1 (ja) * 2011-06-17 2012-12-20 株式会社日立製作所 スイッチ及びそれを用いた計算機システム及びパケット転送制御方法
US8958301B2 (en) * 2011-10-28 2015-02-17 Iii Holdings 2, Llc System and method for dynamically power and performance optimized server interconnects
US9130885B1 (en) 2012-09-11 2015-09-08 Mellanox Technologies Ltd. End-to-end cache for network elements
CN103268210A (zh) * 2013-05-31 2013-08-28 深圳市开立科技有限公司 一种基于fpga的信息传输***及方法
US9325641B2 (en) * 2014-03-13 2016-04-26 Mellanox Technologies Ltd. Buffering schemes for communication over long haul links
US9584429B2 (en) 2014-07-21 2017-02-28 Mellanox Technologies Ltd. Credit based flow control for long-haul links
KR101683818B1 (ko) * 2014-12-29 2016-12-20 주식회사 시큐아이 Cpu 부하 분산 패킷 처리 장치 및 방법
KR102521298B1 (ko) * 2018-02-14 2023-04-14 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10951549B2 (en) 2019-03-07 2021-03-16 Mellanox Technologies Tlv Ltd. Reusing switch ports for external buffer network
CN110334533A (zh) * 2019-07-10 2019-10-15 延安大学西安创新学院 一种经济管理数据分析装置
CN112540949B (zh) * 2020-12-17 2024-07-12 北京航天测控技术有限公司 一种数据传输***
US11558316B2 (en) 2021-02-15 2023-01-17 Mellanox Technologies, Ltd. Zero-copy buffering of traffic of long-haul links
US11973696B2 (en) 2022-01-31 2024-04-30 Mellanox Technologies, Ltd. Allocation of shared reserve memory to queues in a network device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020078233A (ko) * 2001-04-06 2002-10-18 엘지산전 주식회사 이중화된 피엘시 장치의 입출력 제어 장치

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067301A (en) * 1998-05-29 2000-05-23 Cabletron Systems, Inc. Method and apparatus for forwarding packets from a plurality of contending queues to an output
KR100450942B1 (ko) * 1999-11-22 2004-10-02 삼성전자주식회사 이더넷 스위치에서의 어드레스 서치 장치 및 방법
US7315911B2 (en) * 2005-01-20 2008-01-01 Dot Hill Systems Corporation Method for efficient inter-processor communication in an active-active RAID system using PCI-express links
US7251704B2 (en) * 2002-08-23 2007-07-31 Intel Corporation Store and forward switch device, system and method
US8037224B2 (en) * 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US8285907B2 (en) * 2004-12-10 2012-10-09 Intel Corporation Packet processing in switched fabric networks
US7814242B1 (en) * 2005-03-25 2010-10-12 Tilera Corporation Managing data flows in a parallel processing environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020078233A (ko) * 2001-04-06 2002-10-18 엘지산전 주식회사 이중화된 피엘시 장치의 입출력 제어 장치

Also Published As

Publication number Publication date
KR20100025335A (ko) 2010-03-09
US20100057953A1 (en) 2010-03-04

Similar Documents

Publication Publication Date Title
KR100947618B1 (ko) 데이터 처리 시스템
KR102233645B1 (ko) 가상 네트워크 기반 분산 다중 도메인 라우팅 제어 시스템 및 라우팅 제어 방법
US6922408B2 (en) Packet communication buffering with dynamic flow control
CN203206278U (zh) 通用网络接口控制器
US8644139B2 (en) Priority based flow control within a virtual distributed bridge environment
US8891375B2 (en) System and method for virtual Ethernet interface binding
US7965624B2 (en) Data link fault tolerance
CN105577576B (zh) 分布式交换机架构
US9178832B2 (en) Queue credit management
CN104247341B (zh) 分布式交换机及其多播树层次结构的动态优化方法
US10749811B2 (en) Interface virtualization and fast path for Network on Chip
RU2013147150A (ru) Система управления связью, коммутационный узел и способ управления связью
US20130242991A1 (en) Delivering multicast frames to aggregated link trunks in a distributed switch
EP1501247A1 (en) Software configurable cluster-based router using stock personal computers as cluster nodes
US20230275832A1 (en) Networking processor and network device
US11252027B2 (en) Network element supporting flexible data reduction operations
US10007625B2 (en) Resource allocation by virtual channel management and bus multiplexing
US10298485B2 (en) Systems and methods for NoC construction
CN113994321A (zh) 使用虚拟输出队列映射结构上nvme分组
CN108833307B (zh) 数据交换装置
US11509573B2 (en) Control device and control method
US11936570B1 (en) Modular switch and a method for scaling switches
US20120320913A1 (en) Configurable switching or routing device
WO2022186997A1 (en) Job target aliasing in disaggregated computing systems
WO2022147762A1 (zh) 一种数据包排序方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130304

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130730

Year of fee payment: 19