KR101231054B1 - 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법 - Google Patents

전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법 Download PDF

Info

Publication number
KR101231054B1
KR101231054B1 KR1020080130709A KR20080130709A KR101231054B1 KR 101231054 B1 KR101231054 B1 KR 101231054B1 KR 1020080130709 A KR1020080130709 A KR 1020080130709A KR 20080130709 A KR20080130709 A KR 20080130709A KR 101231054 B1 KR101231054 B1 KR 101231054B1
Authority
KR
South Korea
Prior art keywords
data
additional function
dedicated hardware
hardware engine
controller
Prior art date
Application number
KR1020080130709A
Other languages
English (en)
Other versions
KR20100071856A (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 KR1020080130709A priority Critical patent/KR101231054B1/ko
Publication of KR20100071856A publication Critical patent/KR20100071856A/ko
Application granted granted Critical
Publication of KR101231054B1 publication Critical patent/KR101231054B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]

Abstract

본 발명은 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법에 관한 것으로, XML을 비롯한 텍스트 기반의 입력 데이터를 가속 하드웨어를 사용하여 처리하고, 추가 및 부가 기능을 로딩할 수 있는 전용 하드웨어 엔진에서 그 파싱(parsing) 되어진 토큰(token)을 가공, 응용하여 처리함으로써, 기존의 가속 하드웨어를 사용하면서 추가기능 또는 부가기능을 선택적으로 수행할 수 있고, 이러한 추가기능 또는 부가기능에 따른 작업이 하드웨어적으로 수행되므로 호스트 시스템의 부하를 크게 감소시킬 수 있으며, 신속한 작업 수행이 가능한 효과가 있다.
Figure R1020080130709
PMC, 텍스트, XML, 파싱, Parsing, 파서, Parser, 가속기, Accelerator

Description

전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법{Parser Accelerator having hardware engine and method}
본 발명은 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법에 관한 것으로, XML을 비롯한 텍스트 기반의 입력 데이터를 가속 하드웨어를 사용하여 처리하고, 추가 및 부가 기능을 로딩할 수 있는 전용 하드웨어 엔진에서 그 파싱되어진 토큰을 가공, 응용하여 처리하는 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법에 관한 것이다.
본 발명은 지식경제부 및 정보통신연구진흥원의 IT성장동력기술개발의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2006-S-058-03, 과제명: ALL-IP 기반 통합 네트워크 서비스 제어 기술개발].
컴퓨터를 비롯한 복수의 단말을 네트워크로 링크시키거나, 소정의 통신방식으로 상호 통신하는 통신기술이 비약적으로 발달하고 있다. 이러한 환경에서 상호 데이터를 전송하고 공유하는데 있어서, 단말간의 플랫폼 특성의 비호환성, 단말의 처리 능력 등에 따라 호환성의 문제가 발생될 수 있어, 데이터의 상호 호환성은 큰 문제가 되었다.
그에 따라, 광범위하게 사용되고, 임의의 구조 및 아키텍처의 네트워크를 통해 문서로서 전송될 수 있는 확장성 생성 언어(Extensible Markup Language™: XML™)가 개발되었다.
이러한 확장성 생성 언어는, 임의의 문자 스트링은 특수 문자 및 기타 중요한 데이터를 포함한 임의의 커맨드 또는 식별자에 대응하는데, 이것은 데이터 또는 동작이 스스로 식별가능하도록 하여, 객체(objects)로 취급될 수 있고, 이러한 관련 데이터 및 커맨드는 주어진 머신에서 요구된 처리를 지원하는데 충분한, 각각 접속된 플랫폼의 호환성을 생성하기 위해, 상이한 언어로 상이한 애플리케이션의 적절한 형식 및 커맨드로 변환될 수 있다.
확장성 생성 언어의 문자 스트링 검출은 파싱(Parsing: 구문분석)으로 알려진 동작에 의해 수행되는데, 이것은 문장과 같은 표현구문을 그것의 구성 성분으로 분석하고 이를 문법적으로 기술하는 방법과 유사하다.
XML문서를 파싱하는 경우, 시스템의 중앙처리장치는 실행 시간의 대부분을, 처리될 특정 XML 표준으로 정의된 제어단어, 특수 문자 및 기타 중요 데이터에 대한 문서 검색을 하는데 소비된다. 이것은 통상적으로, 각 문자를 문의하고, 이것이 관심 스트링의 소정 세트, 예를 들면 "<command>", "<data = dataword>", "<endcommand>" 등을 포함한 문자 스트링 세트에 속하는지를 판단하는 소프트웨어에 의해 수행된다. 목표 스트링이 검출되면, 토큰이 그 토큰의 시작과 토큰의 길이에 대응하는 문서 내의 위치에 대한 포인터와 함께 저장된다. 이러한 토큰들은 전체 문서가 파싱될 때까지 축적된다.
XML문서 또는 다른 언어의 문서는 문자마다(character-by-character) 파싱된다. 가능한 목표스트링이 인식되면, 관심 문자가 완전히 식별되거나, 또는 가능한 관심 스트링과 일치하지 않는 문자를 만날 때까지, 수행된다.
입력 문서 내의 시작 주소 및 토큰 길이에 따라 메모리에 토큰이 저장되고, 파싱이 완료되면, 모든 객체가 식별되게 되며, 주어진 플랫폼에 따라 소정의 프로세싱이 시작된다.
XML문서와 같은 문서의 파싱은 많은 반복과 이러한 반복을 위해 많은 메모리 액세스를 필요로 하게 된다. 따라서, 범용 중앙처리장치에서 파싱에 따른 리소스 점유도가 높아지게 되므로 이를 분산시킬 목적으로 XML문서와 같은 데이터의 파싱을 위한 가속 장치가 필요하게 된다.
종래의 가속 장치는 상기와 같이 XML문서 파싱을 수행한 후, 파싱된 데이터를 다시 시스템의 중앙처리 장치로 전송한다. XML문서에 대하여 소정의 작업을 수행할 필요성이 있는 경우, 파싱은 가속장치에서 수행하므로 중앙처리장치의 부하가 부분적으로 감소하게 되나, 토큰 형태로 파싱된 데이터를 이용하여 중앙처리장치에서 소정의 작업을 소프트웨어적으로 처리하므로 중앙처리장치의 과부하에 대한 문제는 여전히 남아 있게 된다.
또한, 가속장치가 파싱작업만을 수행하고 추가 작업은 중앙처리장치에서 수행됨에 따라, 시스템의 전반적인 성능향상을 기대할 수 없게 된다. 또한 보통 주문형 반도체(ASIC) 형태로 가속 하드웨어를 제작하기 때문에 추가 및 부가 기능을 유연하게 구현하지 못한다.
따라서, 시스템의 부하를 감소시키면서, 추가기능 또는 부가기능을 하드웨어 적으로 수행할 수 있는 가속장치의 개발이 요구되고 있다.
본 발명의 목적은, XML을 비롯한 텍스트 기반의 입력 데이터를 가속 하드웨어를 사용하여 토큰 형태로 파싱(parsing)하고 유효성을 검사(validation)한 후, 전용 하드웨어 엔진에서, 소정의 추가기능 또는 부가 기능을 로딩하여, 파싱된 토큰을 가공, 응용하여 처리함으로써 추가 작업을 수행할 수 있는 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법을 제공하는데 있다.
상기한 과제를 해결하기 위한 본 발명에 따른 하드웨어 가속장치는 호스트제어부와, 메인메모리가 구비되는 호스트 시스템에 연결되는 하드웨어 가속장치에 있어서, 상기 호스트제어부와 호스트버스를 이용하여 데이터를 송수신하고, 상기 호스트제어부의 통보에 따라 상기 메인메모리의 텍스트 기반의 데이터를 호출하여 파싱하는 가속처리부, 상기 가속처리부에 의해 생성된 데이터를 저장하는 로컬메모리 및 상기 가속처리부에 의해 상기 텍스트 기반의 데이터의 파싱되면, 토큰 형태의 파싱데이터를 인가받아 추가 기능 또는 부가기능을 하드웨어적으로 수행하는 전용 하드웨어 엔진을 포함한다.
상기 가속처리부 및 상기 전용 하드웨어 엔진은, 로컬버스를 이용하여 상호 데이터를 교환하며, 상기 로컬버스는 상기 가속처리부 및 상기 전용 하드웨어 엔진 사이의 양방향으로 고속의 데이터 전송이 가능한 통신 통로인 CPI Bus 인 것을 특징으로 한다.
상기 전용 하드웨어 엔진은 상기 가속처리부(210)에 의해 파싱된 데이터를 이용하여, Binary XML, PubSub(Publish/Subscribe), XML Security, Regular Expression 중 적어도 하나의 추가 및 부가 기능을 하드웨어적으로 수행하는 것을 특징으로 하고, 상기 전용 하드웨어 엔진은 추가기능 또는 부가기능을 수행하는 적어도 하나의 부가기능 제어부 및 상기 부가기능 또는 추기기능을 초기화 하는 초기화제어부를 포함한다.
상기 초기화 제어부는 상기 호스트 시스템 부팅 시, 상기 호스트제어부 및 상기 가속처리부를 통해 상기 추가기능 또는 부가기능의 초기화를 위한 실행코드를 로딩하여 초기화를 수행하는 것을 특징으로 한다.
또한, 본 발명에 따른 하드웨어 가속 방법은 텍스트 기반의 데이터가 호스트시스템으로 입력되면, 호스트제어부로부터 상기 텍스트 기반의 데이터에 대한 통지가 가속처리부로 수신되는 단계, 상기 가속처리부가 상기 텍스트 기반의 데이터를 호출하여 파싱하여 가속장치 내에 구비된 전용 하드웨어 엔진을 인가하는 단계, 상기 전용하드웨어 엔진에 포함된 부가기능 제어부에서 상기 파싱된 데이터를 이용하여 부가기능을 처리하여 결과데이터를 생성하는 단계 및 상기 가속처리부가 상기 전용 하드웨어 엔진의 상기 결과데이터를 상기 호스트제어부로 전송하는 단계를 포함한다.
본 발명에 따르면, 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법은 가속 하드웨어로 XML을 포함한 텍스트 기반 입력 데이터를 파싱한 후, 그 결과를 참조하여, 전용 하드웨어 엔진에서 소정 기능을 로딩하여, 추가 작업을 수행할 수 있으므로, 기존의 가속 하드웨어를 사용하면서 추가기능 또는 부가기능을 선택적으로 수행할 수 있고, 이러한 추가기능 또는 부가기능에 따른 작업이 하드웨어적으로 수행되므로 호스트 시스템의 부하를 크게 감소시킬 수 있고, 신속한 작업 수행이 가능하며, 작업의 효율성이 크게 향상되는 효과가 있다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 설명하면 다음과 같다.
도 1 은 본 발명의 일실시예에 따른 전용 하드웨어 엔진이 구비된 하드웨어 가속장치가 도시된 블록도이다.
본 발명의 하드웨어 가속장치는 소정의 데이터를 처리하는 호스트 시스템에 구비되거나, 또는 탈부착 가능하도록 연결된다.
이때, 호스트 시스템에는 메인 프로세서를 수행하는 호스트 제어부가 구비되고, 프로세서 수행을 위한 데이터, 입출력되는 데이터가 저장되는 메인메모리(120)가 구비되고, 호스트 시스템 내에서 데이터가 이동하고 각 구성을 연결하는 호스트버스(PCI bus)가 포함된다. 예를 들어 호스트제어부(110)는 호스트 시스템의 메인 마이크로프로세서 또는 CPU이다.
이때, 호스트 시스템은 호스트 시스템의 기능에 따라 다른 구성요소를 더 포함하나, 하드웨어 가속장치를 설명하는데 있어서 요지를 흐릴 수 있는 구성에 대한 설명은 하기에서 생략하기로 한다.
도 1을 참조하면, 본 발명의 하드웨어 가속장치(200)는 가속처리부(210), 로컬메모리(220), 전용 하드웨어 엔진(230)을 포함한다. 하드웨어 가속장치(200)는 호스트 제어부(110)를 포함한 호스트 시스템의 구성요소와 데이터를 송수신하는 경우 호스트 버스(150)를 이용한다.
예를 들어 하드웨어 가속장치는 호스트버스로 PCI Bus를 사용하는 XMLPMC카드가 사용될 수 있다. XMLPMC카드는 전용 하드웨어 엔진을 탑재한 본 발명의 하드웨어 가속장치로써, XML 가속기능을 내장한다. 여기서, PMC는 PCI Mezzanine Card의 약자로서 IEEE에서 제정한 보드의 물리적인 규격(P1386.1)이며, 외부 인터페이스의 전기적 특성은 PCIBus을 따른다.
상기와 같이 본 발명은 전용 하드웨어 엔진이 구비되어 하드웨어 가속 처리가 가능한 PMC Card(Peripheral Component Interface Mezzanine Card)에 관한 것으로, 추가 기능 또는 부가기능에 대한 전용 하드웨어 엔진이 구비되는 가속장치라면 어느 것이나 적용 가능하다. 또한, 본 발명의 전용 하드웨어 엔진이 구비되는 하드웨어 가속장치는 XML 파서 가속장치에 추가 기능 또는 부가 기능이 구비되는 것을 예로 하나, XML뿐 아니라 다른 텍스트 데이터에도 적용 가능하다.
가속처리부(210)는 호스트버스(150)를 통해 호스트제어부(110)와 연결되어 제어명령 및 데이터를 송수신하고, 메인메모리(120)의 데이터를 호출하여 분석하여 소정의 결과데이터를 출력한다.
호스트 시스템의 호스트제어부(110)는 텍스트 데이터가 입력되면, 이를 메인 메모리(120)에 저장하고, 텍스트 데이터 입력에 따른 통지를, 호스트 버스를 통해 가속처리부(210)로 인가한다.
이때, 가속처리부(210)는 호스트제어부(110)로부터 XML과 같은 텍스트 데이터의 입력이 통보되면, 메인메모리(120)에 접속하여 지정된 텍스트 데이터를 호출하여 이를 파싱(Parsing)한다. 가속처리부(210)는 메인메모리로부터 로딩된 텍스트 데이터를 로컬메모리(220)에 저장하고, 텍스트 데이터의 파싱(Parsing) 결과 데이터를 로컬메모리(220)에 저장한다. 여기서, 가속처리부(210)는 DMA(Direct Memory Access)방식을 통해 메인 메모리(120)에 있는 입력 데이터를 가져와 파싱(parsing)한다.
예를 들어, 가속처리부(210)는 XML Schema Validation, Simultaneous XPATH, SOAP Validation, XML Transformation 처리한다.
가속처리부(210)는 XML을 비롯한 텍스트 기반의 입력 데이터를 토큰(Token) 형태로 파싱(Parsing)하고 유효성을 검사(Validation)한 후, 전용 하드웨어 엔진(230)을 통해 소정의 추가기능 또는 부가기능이 처리되도록 한다.
로컬메모리(220)는 가속장치(200) 내에서 수행되는 프로세스에 대한 제어데이터 및 가속 처리부 및 전용 하드웨어 엔진이 소정 작업을 수행하는 중 발생되는 데이터가 저장된다. 로컬메모리(220)는 가속처리부(210)에 의해 메인메모리(120)로부터 호출된 텍스트 데이터가 저장되고 가속처리부(210)에 의해 텍스트 데이터터가 파싱되면, 그 결과데이터인 파싱 데이터가 저장된다. 또한, 로컬메모리는 전용 하드웨어 엔진에 의해 소정 기능이 수행되면, 그에 따른 결과데이터가 호스트제어 부(110)로 전송되기 전, 결과데이터가 저장된다.
전용 하드웨어 엔진(230)은 가속처리부(210)에 의해 파싱된 데이터를 인가받아, 그 파싱되어진 토큰을 가공, 응용하여 처리하여 소정을 부가기능 또는 추가 기능을 수행한다. 전용 하드웨어 엔진(230)의 부가기능은 적어도 하나 구비되며, 복수의 부가기능이 탑재된 경우, 스위치, 또는 호스트제어부(110), 가속처리부(210)의 요청에 따라 어느 하나의 부가 기능이 선택될 수 있고, 경우에 따라 복수의 부가기능이 수행될 수 있다.
여기서, 전용 하드웨어 엔진(230)에 탑재되는 기능은 필요에 따라 선택적으로 탑재될 수 있으며, 경우에 따라 추가하거나 제거 할 수 있다. 이때, 부가 기능이 탑재되는 경우, 해당 기능에 대한 데이터 처리가 가능한 마이크로프로세서 또는 관련 칩이 탑재되는 것으로, 가속처리부(210)에 의해 파서된 데이터를 이용한 기능인 경우 어느 것이라도 적용될 수 있다.
전용 하드웨어 엔진(230)은 적어도 하나의 부가기능 제어부(232 내지 234)를 포함하고, 각각의 부가기능 제어부에 대하여 초기화를 수행하는 초기화 처리부(231)을 포함한다.
전용 하드웨어 엔진(230)은 초기화 처리부(231)에 의해 원하는 추가기능 또는 부가 기능에 따라 여러 가지 용도로 초기화될 수 있고, 전용 하드웨어 엔진(230) 내에서 수행될 실행 코드들은 가속처리부(210)에서 로딩(loading) 및 컨피겨(configure)된다.
전용 하드웨어 엔진(230)은 가속장치(200)의 각 구성요소와 로컬 버스(CPI Bus, (Content Processor Interface Bus)(240)를 이용하여 데이터를 송수신하며, 특히 가속처리부(210)와 데이터 또는 제어명령 송수신시 로컬버스(240)를 이용한다.
로컬버스(CPI Bus)(240)는 전용 하드웨어 엔진(230)과 가속처리부(210) 사이의 양방향, 고속의 통신 통로이며, 그 통로를 통하여 필요한 데이터 교환을 하게 된다.
전용 하드웨어 엔진(230)는 가속처리부(210)에 의해 파싱된 데이터를 이용하여, 많은 추가 작업이 필요한 Binary XML, PubSub(Publish/Subscribe), XML Security, Regular Expression 등의 추가 및 부가 기능을 하드웨어적으로 수행한다. 전용 하드웨어 엔진(230)은 상용 FPGA를 사용한다.
이때, 전용 하드웨어 엔진(230)이 가속처리부(210)와 동일한 칩으로 구현되지 않고, 별도로 구현됨으로써, 원하는 추가 및 부가 기능들을 각각 로딩하여, 다양한 적용 및 기능 구현이 가능하게 된다.
초기화처리부(231)는 호스트 시스템이 초기 구동시, 또는 가속장치가 구동되는 때에, 전용 하드웨어 엔진(230)내에서 부가기능 또는 추가기능에 대하여 초기화를 수행한다.
이때, 초기화 처리부(231)는 로컬버스(240)를 이용하여 가속처리부(210)를 통해 호스트버스(150)를 이용하여 호스트제어부(110)에 접속하고, 호스트제어부(110)로 부가기능 또는 추가기능에 대한 실행코드가 가속처리부(210)로 로딩되도록 한다. 초기화처리부(231)에 의해 요청되는 실행코드는 호스트제어부(110)및 가 속처리부(210)를 통해 메인메모리(120)로부터 호출되어, 호스트버스를 통해 가속장치(200)로 인가되고, 로컬메모리(220)에 저장된다.
초기화처리부(231)는 로컬버스(240)를 이용하여 가속처리부(210) 및 로컬메모리(220)와 데이터를 송수신하고, 가속처리부에 의해 부가기능에 대한 실행코드가 로딩 및 컨피겨되도록 함으로써, 부가기능을 초기화하여, 그에 따라 각 부가기능 제어부가 지정된 동작을 수행하게 된다.
초기화 처리부(231)는 설치된 부가기능제어부 중 초기화 되지 않은 부가기능 제어부가 존재하는 경우, 상기와 같이, 해당 실행코드를 로딩하여 부가기능 제어부가 초기화 되도록 한다.
부가기능제어부(232 내지 234)는 적어도 하나 구비되어, 상기와 같이 초기와 처리부(231)에 의해 초기화 된다. 부가기능 제어부(232 내지 234)는 가속 처리부(210)와, 로컬버스(CPI Bus, Content Processor Interface Bus)를 통해 데이터를 송수신하여 추가 및 부가 기능을 수행한다.
부가기능제어부(232 내지 234)는 요구되는 기능, 사용자가 원하는 기능에 따라 선택적으로 구비될 수 있다. 제 1 내지 제 n 부가기능 제어부(232 내지 234)는 각각 상이한 기능을 수행하나, 경우에 따라 관련 작업을 수행하는 경우 하나의 부가기능 제어부에 의해 처리된 데이터가 다른 부가기능 제어부로 인가되어 다음 작업이 처리될 수 있으며, 또는 동시에 복수의 부가기능 제어부가 동작을 수행할 수 있다.
제1 내지 제 n 부가기능 제어부(232 내지 234)는 초기화 완료 후, 수행된 부 가기능이 선택된 경우, 해당 기능에 대응하는 부가기능 제어부가 활성화되어, 로컬메모리(220)에 저장된 파싱데이터를 호출하여 지정된 작업을 수행한다.
이때, 제1 내지 제 n 부가기능 제어부(232 내지 234) 중 어느 부가기능이 수행되는지에 대해서는, 가속처리부9210)에 의한 파싱작업 이후 결정되거나, 호스트제어부(110)로부터 가속처리부(210)로 텍스트 데이터 알림을 통지되는 때에 결정되어 파싱 후 수행될 부가 기능 또는 추가기능에 대한 정보가 가속장치로 인가될 수 있다.
이때, 수행할 부가기능 또는 추가기능은 호스트 시스템에 구비되는 입력수단을 통해 입력되거나, 텍스트 데이터에 포함된 정보 또는 텍스트 데이터의 종류에 따라 호스트제어부(110) 또는 가속처리부(210)에 의해 결정될 수 있다.
가속처리부(240)는 부가기능 제어부로부터 작업수행에 따른 처리결과데이터를 로컬버스(240)를 통해 인가받고, 이를 로컬메모리(220)에 임시저장한다. 이후 가속처리부(240)는 처리결과 데이터는 호스트버스(150)를 이용하여 호스트제어부(110)로 전송한다.
호스트제어부(110)는 수신된 처리결과데이터는 메인메모리(120)에 저장하고, 처리결과가 출력되도록 구비되는 출력수단을 제어한다. 여기서, 처리결과는 디스플레이수단, 음향출력수단, 인쇄수단 등을 통해 외부로 출력될 수 있다.
본 발명은 상기와 같이, 가속장치에 전용 하드웨어 엔진이 구비됨에 따라, 가속처리부에서 파싱된 데이터를 호스트제어부로 재 전송하여 호스트제어부에 의해 소정의 부가기능 또는 추가작업이 수행되는 것이 아니라, 가속장치 내에서 전용 하드웨어 엔진의 부가기능 제어부에 의해 처리됨에 따라, 호스트 시스템의 호스트제어부에 대한 부하가 감소하여 호스트 시스템 작업에 영향이 감소되고, 파싱 후 부가기능에 따른 빠른 작업 처리가 가능하므로 성능향상이 가능하다.
특히 본 발명의 하드웨어 가속장치는 추가작업 또는 부가적인 작업이 많이 종래에 처리할 수 없었던, Binary XML, PubSub(Publish/Subscribe), XML Security, Regular Expression 등을 전용 하드웨어 엔진을 이용하여 가속장치 내에서 하드웨어적으로 처리 할 수 있게 된다.
도 2 는 본 발명의 일실시예에 따른 하드웨어 가속장치의 데이터 흐름에 대한 설명에 참조되는 흐름도이다.
호스트 시스템으로 텍스트 기반의 데이터(300)가 입력되면(310), 호스트제어부(320)는 입력되는 텍스트 데이터를 메인메모리(310)에 저장하고, 텍스트 데이터가 입력되었음을 가속장치(200)의 가속처리부(330)로 인가한다(322).
이때, 호스트제어부(320)는 호스트버스(PCI Bus)(150)를 통해 가속처리부(330)로 텍스트 데이터의 입력을 통지한다.
그에 따라 가속처리부(210)는 호스트버스(PCI Bus)(150)를 통해 DMA(Direct Memory Access)방식을 이용하여 메인메모리(310)에 저장된 텍스트데이터를 가져와(331) 토큰(Token) 형태로 파싱(Parsing)한다(330). 가속처리부(210)는 호출한 텍스트 데이터를 로컬메모리(220)에 임시저장하고(332), 파싱하면서 그 결과를 로컬 메모리(220)에 저장한다(333).
가속처리부(210)에 의해 텍스트 데이터의 파싱 작업이 완료되고, 파싱 데이터에 대한 유효성 작업이 완료되면, 전용 하드웨어 엔진으로 토큰 형태의 파싱 데이터가 인가되어(361), 부가기능 제어부(232 내지 234)에 의해 부가기능이 하드웨어적으로 처리된다(360).
이때, 처리되는 추가기능 또는 부가기능은, 호스트시스템 부팅 시, 초기화제어부(231)에 의해 실행코드(352)가 로딩되고(350), 부가기능 제어부에 의해 부가기능이 실행된다(360).
여기서, 초기화 제어부(231)는 호스트제어부(110), 호스트 버스(150), 가속처리부(210)를 차례로 통해(323, 352), 전용 하드웨어 엔진(107)의 초기화 모듈(108)로 실행코드가 로딩되도록 한다(351).
부가기능제어부 및 초기화제어부(231)는 가속처리부(210)와 로컬버스(CPI bus)(240)를 데이터를 송수신하여 추가 및 부가 기능을 수행한다.
부가기능제어부에 의해 처리된 처리결과데이터는 로컬버스(CPI Bus)를 통해 가속처리부(210)로 인가되고 로컬메모리(220)에 저장된다(362,334). 가속처리부(210)는 로컬메모리(220)의 처리결과데이터를 호스트버스(PCI Bus)(150)를 통해 호스트제어부(110)로 인가하고, 호스트제어부(110)는 처리결과데이터는 메인메모리(310)에 저장한다(332,324). 이후, 호스트제어부(110)는 처리결과데이터가 소정의 출력수단을 통해 외부로 출력되도록 하고(371), 사용자는 출력된(370) 처리결과데이터를 확인할 수 있게 된다.
도 3 은 본 발명의 일실시예에 따른 하드웨어 가속장치의 전용 하드웨어 엔진을 이용한 데이터 처리방법에 대한 동작설명에 참조되는 흐름도이다.
도 3을 참조하면, 호스트 시스템으로 텍스트 데이터가 입력되면(S410), 호스트제어부(110)는 입력된 텍스트 데이터를 메인메모리(120)에 저장하고, 호스트버스를 이용하여 가속처리부(210)로 통보한다(S420).
가속처리부(210)는 호스트제어부(110)의 통보에 따라, 메인메모리(120)의 텍스트데이터를 가져와 토큰 형태로 파싱한다(S430). 가속처리부(210)는 텍스트 데이터 파싱하여 파싱데이터를 생성하고 이를 로컬메모리(220)에 저장한다(S440).
이때, 가속처리부(210)에 의해 처리된 파싱데이터는 선택된 부가기능 처리를 위해 부가기능 제어부로 인가되고 (S450), 선택된 부가기능 제어부가 실행됨에 따라(S460), 파싱데이터에 대한 부가기능이 실행된다(S470). 부가기능 제어부(232 내지 234) 및 초기화제어부(231)는 가속처리부(210)와 로컬버스(CPI bus)를 통해 데이터를 송수신함으로써, 부가기능을 처리한다.
부가기능 제어부(232 내지 234)는 처리결과데이터를 가속처리부(210)로 인가하고, 처리결과데이터는 로컬메모리(220)에 저장된다(S480). 가속처리부(210)는 호스트버스(CPI bus)(150)를 통해 호스트제어부(110)로 처리결과데이터를 전송한다(S450).
호스트제어부(110)는 처리결과데이터는 메인메모리(120)에 저장하고, 호스트시스템에 구비되는 출력수단을 통해 출력되도록 한다(S500).
도 4 는 본 발명의 일실시예에 따른 하드웨어 가속장치의 전용 하드웨어 엔진 초기화 방법에 대한 동작설명에 참조되는 흐름도이다.
도 4 를 참조하면, 호스트시스템 부팅 시(S550), 가속장치의 전용 하드웨어 엔진의 초기화제어부(231)는 구비되는 부가기능에 대하여(S560), 부가기능에 대한 초기화를 수행한다(S570).
초기화제어부(231)는 가속처리부(210), 호스트버스(150), 호스트제어부(110)를 통해 실행코드를 로딩하여 초기화를 수행한다(S580), 이때, 실행코드는 가속처리부(210)로 로딩되고, 가속처리부에 의해 실행코드에 대한 설정이 수행된다.
부가기능 제어부(232 내지 234)는 가속처리부(210)로부터 토큰 형태로 파싱된 파싱데이터를 로컬버스(240)를 통해 인가받고(S590), 부가기능을 실행하여 로딩된 파싱데이터를 응용 및 가공하여 파싱데이터에 대한 부가기능을 실행 및 처리한다. (S600).
부가기능제어부(232)는 부가기능 처리에 따른 결과데이터를 로컬버스(240)를 이용하여 가속처리부(210)로 인가하고, 가속처리부(210)는 로컬메모리(220)에 임시 저장 후, 호스트버스(150)를 통해 호스트제어부(110)로 인가한다.
그에 따라, 호스트제어부(110)는 도3에서 설명한 바와 같이, 메인메모리(120)에 저장하고, 출력수단을 통해 출력한다.
상기와 같이 본 발명은 가속장치에 전용 하드웨어 엔진(230)을 구비함으로써, 기존 발명에서 소프트웨어적으로 구현할 수 밖에 없었던 추가 및 부가 기능을 하드웨어적으로 처리할 수 있고, 그에 따라 호스트 제어부 등 호스트 시스템의 부하가 크게 감소되고, 성능 향상이 가능하게 된다.
또한, 가속장치는 전용 하드웨어 엔진을 선택적으로 구비할 수 있으므로, 필요한 추가기능 또는 부가기능을 가속장치에 구비함으로써, 특정 기능에 대하여 특 화된 장치 구성이 가능할 뿐 아니라, 다양한 추가기능 또는 부가기능이 구비되도록 할 수 있어, 가속처리부와 전용 하드웨어 엔진을 하나의 칩으로 구현하는 것보다, 다양한 기능 구성이 가능할 뿐 아니라, 필요한 기능만을 선택하여 수행할 수 있어 다양성 및 효율성도 크게 향상된다.
또한, 본 발명의 가속장치는 XML 뿐만이 아니라 텍스트 기반 입력 데이터의 하드웨어 가속기에도 확대 적용이 가능하다.
이상과 같이 본 발명에 의한 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법은 예시된 도면을 참조로 설명하였으나, 본 명세서에 개시된 실시예와 도면에 의해 본 발명은 이에 한정되지 않고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 응용될 수 있다.
도 1 은 본 발명의 일실시예에 따른 전용 하드웨어 엔진이 구비된 하드웨어 가속장치가 도시된 블록도이고,
도 2 는 본 발명의 일실시예에 따른 하드웨어 가속장치의 데이터 흐름에 대한 설명에 참조되는 흐름도이고,
도 3 은 본 발명의 일실시예에 따른 하드웨어 가속장치의 전용 하드웨어 엔진을 이용한 데이터 처리방법에 대한 동작설명에 참조되는 흐름도이고,
도 4 는 본 발명의 일실시예에 따른 하드웨어 가속장치의 전용 하드웨어 엔진 초기화 방법에 대한 동작설명에 참조되는 흐름도이다.
<도면의 주요 부분에 관한 부호의 설명>
110: 호스트제어부 120: 메인메모리
150: 호스트 버스 (PCI Bus)
200: 가속장치 210: 가속처리부
220: 로컬메모리 230: 전용 하드웨어 엔진
231: 초기화 처리부 232 내지 234: 부가기능 제어부
240: 로컬 버스(CPI Bus)

Claims (10)

  1. 호스트제어부와, 메인메모리가 구비되는 호스트 시스템에 연결되는 하드웨어 가속장치에 있어서,
    상기 호스트제어부와 호스트버스를 이용하여 데이터를 송수신하고, 상기 호스트제어부의 통보에 따라 상기 메인메모리의 텍스트 기반의 데이터를 호출하여 파싱하는 가속처리부;
    상기 가속처리부에 의해 생성된 데이터를 저장하는 로컬메모리; 및
    상기 가속처리부에 의해 상기 텍스트 기반의 데이터의 파싱되면, 토큰 형태의 파싱데이터를 인가받아 추가 기능 또는 부가기능을 하드웨어적으로 수행하는 전용 하드웨어 엔진;을 포함하고,
    상기 전용 하드웨어 엔진은 추가기능 또는 부가기능을 수행하는 적어도 하나의 부가기능 제어부; 및
    상기 부가기능 또는 추가기능을 초기화하는 초기화제어부를 포함하며,
    상기 초기화 제어부는 상기 호스트 시스템 부팅 시, 상기 호스트제어부 및 상기 가속처리부를 통해 상기 추가기능 또는 부가기능의 초기화를 위한 실행코드를 로딩하여 초기화를 수행하는 것을 특징으로 하는 하드웨어 가속장치.
  2. 제 1 항에 있어서,
    상기 가속처리부 및 상기 전용 하드웨어 엔진은, 로컬버스를 이용하여 상호 데이터를 교환하며,
    상기 로컬버스는 상기 가속처리부 및 상기 전용 하드웨어 엔진 사이의 양방향으로 고속의 데이터 전송이 가능한 통신 통로인 CPI Bus 인 것을 특징으로 하는 하드웨어 가속장치.
  3. 제 1 항에 있어서,
    상기 전용 하드웨어 엔진은 상기 가속처리부에 의해 파싱된 데이터를 이용하여, Binary XML, PubSub(Publish/Subscribe), XML Security, Regular Expression 중 적어도 하나의 부가기능 또는 추가기능을 하드웨어적으로 수행하는 것을 특징으로 하는 하드웨어 가속장치.
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 부가기능 제어부는 상기 초기화 제어부에 의해 로딩된 실행코드를 이용하여, 상기 추가기능 또는 부가기능을 실행하고, 상기 파싱데이터를 응용 및 처리하여 결과데이터를 생성하는 것을 특징으로 하는 하드웨어 가속장치.
  7. 제 6 항에 있어서,
    상기 가속처리부는 상기 부가기능 제어부로부터 상기 결과데이터를 인가받아, 상기 로컬메모리에 저장하고, 상기 호스트버스를 이용하여 상기 호스트제어부로 전송하는 것을 특징으로 하는 하드웨어 가속장치.
  8. 텍스트 기반의 데이터가 호스트시스템으로 입력되면, 호스트제어부로부터 상기 텍스트 기반의 데이터에 대한 통지가 가속처리부로 수신되는 단계;
    상기 가속처리부가 상기 텍스트 기반의 데이터를 호출하여 파싱하여 가속장치 내에 구비된 전용 하드웨어 엔진을 인가하는 단계;
    상기 전용 하드웨어 엔진에 포함된 부가기능 제어부에서 상기 파싱된 데이터를 이용하여 부가기능을 처리하여 결과데이터를 생성하는 단계; 및
    상기 가속처리부가 상기 전용 하드웨어 엔진의 상기 결과데이터를 상기 호스트제어부로 전송하는 단계를 포함하고,
    상기 전용 하드웨어 엔진 내의 부가기능 제어부의 부가기능 수행에 필요한 실행코드가 로딩 되지 않은 경우, 상기 전용 하드웨어 엔진 내에 포함된 초기화 제어부가 상기 호스트제어부를 통해 실행코드를 로딩하는 것을 특징으로 하는 하드웨어 가속장치의 동작방법.
  9. 삭제
  10. 제 8 항에 있어서,
    상기 가속처리부는 상기 전용 하드웨어 엔진과 CPI Bus를 이용하여 데이터를 전달하고, PCI Bus를 이용하여 상기 호스트제어부로 데이터를 전송하는 것을 특징으로 하는 하드웨어 가속장치의 동작방법.
KR1020080130709A 2008-12-19 2008-12-19 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법 KR101231054B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080130709A KR101231054B1 (ko) 2008-12-19 2008-12-19 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080130709A KR101231054B1 (ko) 2008-12-19 2008-12-19 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20100071856A KR20100071856A (ko) 2010-06-29
KR101231054B1 true KR101231054B1 (ko) 2013-02-07

Family

ID=42369272

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080130709A KR101231054B1 (ko) 2008-12-19 2008-12-19 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR101231054B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10810016B2 (en) 2015-08-11 2020-10-20 Samsung Electronics Co., Ltd. Operating methods of computing devices comprising storage devices including nonvolatile memory devices, buffer memories and controllers

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990086532A (ko) * 1998-05-28 1999-12-15 김영환 데이터 전송 제어 장치
JP2003141075A (ja) * 2001-11-06 2003-05-16 Infoscience Corp ログ情報管理装置及びログ情報管理プログラム
KR20050072128A (ko) * 2002-10-29 2005-07-08 록히드 마틴 코포레이션 하드웨어 파서 가속기

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990086532A (ko) * 1998-05-28 1999-12-15 김영환 데이터 전송 제어 장치
JP2003141075A (ja) * 2001-11-06 2003-05-16 Infoscience Corp ログ情報管理装置及びログ情報管理プログラム
KR20050072128A (ko) * 2002-10-29 2005-07-08 록히드 마틴 코포레이션 하드웨어 파서 가속기

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10810016B2 (en) 2015-08-11 2020-10-20 Samsung Electronics Co., Ltd. Operating methods of computing devices comprising storage devices including nonvolatile memory devices, buffer memories and controllers

Also Published As

Publication number Publication date
KR20100071856A (ko) 2010-06-29

Similar Documents

Publication Publication Date Title
US20200143051A1 (en) Security scanning method and apparatus for mini program, and electronic device
KR20080040104A (ko) Sca 기반 시스템의 애플리케이션 컴포넌트 통신 장치 및방법
CN110874236A (zh) 一种跨平台应用装置、终端及存储介质
CN110147397B (zh) 系统对接方法、装置、管理系统及终端设备、存储介质
CN110007926B (zh) 语言转换方法及装置
CN115657553A (zh) Pcie拓扑和pcie设备模拟方法、装置、设备及介质
CN109683890B (zh) 层叠样式表模块化的方法、装置、存储介质及设备
KR101284403B1 (ko) 저장 네트워크 환경에서 scsi 타겟으로부터 scsi 에러 응답을 커스터마이징하는 방법, 비-일시적 컴퓨터 판독 가능한 저장 매체, 저장 네트워크 환경에서 scsi 타겟으로부터 수신된 scsi 에러 응답을 커스터마이징하는 시스템
US20120166585A1 (en) Apparatus and method for accelerating virtual desktop
CN110532182B (zh) 一种虚拟化平台的自动化测试方法及装置
CN114817115A (zh) 串口通信方法及相关装置
JP5039946B2 (ja) クライアント装置およびサーバ装置の間の通信を中継する技術
US10353700B1 (en) Code base sharing between standalone and web-based versions of an application via an emulated network communication channel
KR101231054B1 (ko) 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법
CN116192985B (zh) 一种数据传输方法、装置及系统
CN116126690A (zh) 一种用于轻量级嵌入式系统的调试方法及系统
CN113760274B (zh) 一种前端组件逻辑注入方法和装置
US11169783B2 (en) System and method for generating an executable hardware-software interface specification
US11360926B2 (en) Configuration management device, configuration management system, configuration management method, and non-transitory computer readable storage medium
CN111198614A (zh) 处理人类接口设备的输入内容的方法和装置
JP2006260281A (ja) スクリプト生成プログラムおよびバッチ実行システム
EP3872630B1 (en) Request processing method and apparatus, electronic device, and computer storage medium
CN116886747A (zh) 基于前端的后端业务功能调用方法、装置、设备及介质
JP4708685B2 (ja) Cliコマンド投入方法/プログラム/プログラム記録媒体/装置、データ記録媒体
CN113535239B (zh) 底层驱动转发方法及基于uefi实现的多核系统

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee