KR102426416B1 - 멀티 커널 시스템의 입출력 처리 방법 및 장치 - Google Patents

멀티 커널 시스템의 입출력 처리 방법 및 장치 Download PDF

Info

Publication number
KR102426416B1
KR102426416B1 KR1020180122065A KR20180122065A KR102426416B1 KR 102426416 B1 KR102426416 B1 KR 102426416B1 KR 1020180122065 A KR1020180122065 A KR 1020180122065A KR 20180122065 A KR20180122065 A KR 20180122065A KR 102426416 B1 KR102426416 B1 KR 102426416B1
Authority
KR
South Korea
Prior art keywords
kernel
input
output
parallel processor
lightweight
Prior art date
Application number
KR1020180122065A
Other languages
English (en)
Other versions
KR20190041954A (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 US16/159,342 priority Critical patent/US11042394B2/en
Publication of KR20190041954A publication Critical patent/KR20190041954A/ko
Application granted granted Critical
Publication of KR102426416B1 publication Critical patent/KR102426416B1/ko

Links

Images

Classifications

    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared 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
    • G06F9/3855
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)

Abstract

멀티 커널 시스템의 입출력 처리 방법이 개시된다. 본 개시의 일 실시 예에 따른 멀티 커널 시스템의 입출력 처리 방법은 메인 프로세서의 제1커널과 병렬 프로세서의 경량 커널 사이의 공유 메모리를 설정하는 과정과, 상기 공유 메모리를 사용하여, 상기 메인 프로세서의 제1커널과 상기 병렬 프로세서의 경량 커널 사이의 데이터 송수신 채널을 설정하는 과정과, 상기 데이터 송수신 채널을 통해, 상기 경량 커널에서 발생되는 입출력 태스크를 상기 메인 프로세서의 제1커널에 전달하는 과정과, 상기 메인 프로세서의 제1커널이 상기 입출력 태스크에 대응되는 동작을 처리하고, 처리 결과를 상기 경량 커널에 전달하는 과정을 포함할 수 있다.

Description

멀티 커널 시스템의 입출력 처리 방법 및 장치{METHOD FOR PROCESSING INPUT AND OUTPUT ON MULTI KERNEL SYSTEM AND APPARATUS FOR THE SAME}
본 개시는 컴퓨팅 디바이스에 관한 것이며, 보다 구체적으로는 매니코어 시스템에서의 메모리 액세스 관리에 관한 것이다.
시스템 성능 및 전력 요구사항들은 컴퓨터 시스템들 및 디바이스들, 특히, 휴대용 컴퓨팅 디바이스 (PCD) 들, 예컨대, 셀룰러 전화기들, 휴대용 정보 단말기 (PDA) 들, 휴대용 게임 콘솔들, 팜탑 컴퓨터들, 태블릿 컴퓨터들, 및 다른 휴대용 전자 디바이스들에서 점점 더 요구가 많아지고 있다. 그러한 디바이스들은 특정 목적을 위해 최적화된 복수의 프로세싱 유닛들을 포함할 수도 있다. 예를 들어, 하나 이상의 중앙 프로세싱 유닛(CPU) 들은 일반적인 시스템 레벨 성능 및 다른 목적들에 이용될 수도 있는 반면, 그래픽 프로세싱 유닛(GPU)은 디스플레이 디바이스에 출력하기 위한 컴퓨터 그래픽들을 조작하기 위해 특정하게 설계될 수도 있다. 각각의 프로세서가 보다 많은 성능을 요구함에 따라, 각각의 프로세서의 특정 목적(들)을 가능하게 하도록 설계된 보다 빠르고 보다 특수화된 메모리 디바이스들이 요구되고 있다.
메모리 아키텍쳐들은 통상적으로 특정 애플리케이션에 대해 최적화된다. CPU들은 수용 가능한 시스템 레벨 성능을 갖는 고밀도 메모리를 요구할 수 있고, GPU들은 CPU들보다 대체로 높은 성능을 갖는 상대적으로 저밀도 메모리를 요구할 수도 있다.
메인 프로세서 및 병렬 프로세서의 일 예로서 각각 제온(Xeon) 프로세서와 제온 파이(Xeon Phi) 프로세서를 들 수 있다. 경량 커널은 연산위주의 응용 프로그램을 빠르게 처리하기 위해 최소한의 소프트웨어 스택으로 구성된 커널로서, 제온 파이에서 많은 코어를 통해 병렬성을 높이기 위해 경량 커널을 운영할 수 있다. 제온 파이에서 운영되는 경량 커널은 운영체제의 간섭을 최소화하기 위해 파일 입/출력을 처리하기 위한 소프트웨어 스택을 포함하고 있지 않다. 그러나, 파일 입/출력을 필요로 하는 응용프로그램의 성능을 높이기 위해서는 고속의 파일 입/출력 기능이 필요하다.
고성능 컴퓨팅에서 파일 입/출력을 병렬적으로 처리하기 위해 종래에 NAS나 Lustre와 같은 기술이 존재한다. 하지만, 이는 리눅스에서만 지원되기 때문에 경량 커널에 적용하기에는 어려움이 있다. 또한, NAS와 Lustre와 같은 소프트웨어를 탑재하게 되면 프로세스의 컴퓨팅 오버헤드로 인해 응용 프로그램을 수행하는데 간섭을 발생시키고 이로 인해 성능이 저하되며, 또한 탑재를 위해서 추가되는 환경이 또 다른 간섭을 발생시켜 성능을 저하시킬 수 있다.
매니코어 환경에서의 고 성능의(extreme-scale) 컴퓨팅을 위해서는 기존의 운영체제를 개선하는 방식보다 새로운 하드웨어에 맞춰 새로운 커널에 대한 개발이 요구되고 있다.
본 개시의 기술적 과제는 매니코어 환경에서의 물리적 자원 특성을 고려하여 경량 커널에서 발생되는 입출력을 처리할 수 있는 방법 및 장치를 제공하는 것이다.
또한, 본 개시의 기술적 과제는 병렬 프로세서의 설치된 커널에 파일 입/출력을 오프로드하고 DMA(Dynamic Memory Access)기반으로 고속의 파일 입/출력을 수행하는 방법 및 장치를 제공하는 것이다.
본 개시에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명에 따르면, 본 메인 프로세서의 제1 커널과 병렬 프로세서의 경량 커널 사이의 공유 메모리를 설정하는 단계; 상기 공유 메모리를 이용하여, 상기 메인 프로세서의 제1 커널과 상기 병렬 프로세서의 경량 커널 사이의 데이터 송수신 채널을 설정하는 단계; 상기 데이터 송수신 채널을 기반으로 상기 경량 커널에서 발생되는 입출력 태스크를 상기 메인 프로세서의 제1 커널에 전달하는 단계; 상기 메인 프로세서의 제1 커널이 상기 입출력 태스크에 대응되는 동작을 처리하는 단계; 및 상기 처리 결과를 상기 경량 커널에 전달하는 단계를 포함하는 멀티 커널 시스템의 입출력 처리 방법이 제공될 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 공유 메모리를 설정하는 단계는, 상기 메인 프로세서에 탑재된 제1 커널과 상기 병렬 프로세서에 탑재된 제2 커널 사이의 공유 메모리를 설정하는 단계를 포함할 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 공유 메모리를 설정하는 단계는, 상기 병렬 프로세서에 탑재된 제2 커널이 상기 공유 메모리의 물리 주소를 확인하는 단계; 상기 병렬 프로세서에 탑재된 제2 커널이 상기 경량 커널로 상기 공유 메모리의 물리 주소를 제공하는 단계; 및 상기 경량 커널이 상기 물리 주소에 대응되는 가상 주소를 설정하는 단계를 포함할 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 데이터 송수신 채널을 설정하는 단계는, 상기 병렬 프로세서의 경량 터널과 상기 메인 프로세서의 제1 커널이 상기 공유 메모리에 입출력 요구 큐를 설정하는 단계; 및 상기 메인 프로세서의 제1 커널과 상기 병렬 프로세서의 경량 커널이 상기 공유 메모리에 입출력 응답 큐를 설정하는 단계를 포함할 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 경량 커널에서 발생되는 입출력 태스크를 상기 제1 커널에 전달하는 단계는, 상기 입출력 태스크와 관련된 파라미터를 상기 입출력 요구 큐에 적재하는 단계를 포함할 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 처리 결과를 상기 경량 커널에 전달하는 단계는, 상기 처리 결과에 대응되는 데이터를 상기 입출력 응답 큐에 적재하는 단계를 포함할 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 입출력 태스크와 관련된 파라미터는, 파일 식별자, 파일 타입, 파일 경로, 파일 디스크립터 중 적어도 하나를 포함할 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 메인 프로세서에 탑재된 제1 커널과 상기 병렬 프로세서에 탑재된 제2 커널은 동일한 커널일 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 입출력 요구 큐 및 상기 입출력 응답 큐는 상기 공유 메모리의 물리 주소와 가상 주소를 매핑한 정보를 사용하여 설정될 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 입출력 태스크와 관련된 파라미터를 상기 입출력 요구 큐에 적재하는 단계는, 상기 입출력 요구 큐에 대응되는 가상 주소를 확인하는 단계; 및 상기 입출력 태스크와 관련된 파라미터를 상기 입출력 요구 큐에 대응되는 가상 주소에 적재하는 단계를 포함할 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 처리 결과에 대응되는 데이터를 상기 입출력 응답 큐에 적재하는 단계는, 상기 입출력 응답 큐에 대응되는 가상 주소를 확인하는 단계; 및 상기 처리 결과에 대응되는 데이터를 상기 입출력 응답 큐에 대응되는 가상 주소에 적재하는 단계를 포함할 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 처리 결과를 상기 경량 커널에 전달하는 단계는, 상기 경량 커널이 상기 입출력 응답 큐에 적재된 상기 처리 결과에 대응되는 데이터를 확인하는 단계를 더 포함할 수 있다.
또한, 본 발명에 따르면, 병렬 프로세서의 제1 커널과 상기 병렬 프로세서의 경량 커널 사이의 공유 메모리를 설정하는 단계; 상기 공유 메모리를 이용하여, 상기 병렬 프로세서의 제1 커널과 상기 병렬 프로세서의 경량 커널 사이의 데이터 송수신 채널을 설정하는 단계; 상기 데이터 송수신 채널을 기반으로 상기 경량 커널이 상기 경량 커널에서 발생되는 입출력 태스크를 상기 병렬 프로세서의 제1 커널에 전달하는 단계; 상기 병렬 프로세서의 제1 커널이 상기 입출력 태스크를 메인 프로세서의 제2 커널에 전달하는 단계; 및 상기 메인 프로세서의 제2 커널이 상기 입출력 태스크에 대응되는 동작을 처리하는 단계를 포함하고, 상기 처리하는 단계는, 상기 메인 프로세서의 제2 커널이 DMA(Dynamic Memory Access) 방식을 기반으로 상기 입출력 태스크에 대응되는 데이터를 상기 경량 커널에 전달하는 단계를 포함하는 멀티 커널 시스템의 입출력 처리 방법이 제공될 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 처리하는 단계는, 상기 메인 프로세서의 제2 커널이 상기 입출력 태스크의 처리 결과를 상기 병렬 프로세서의 제1 커널에 전송하는 단계를 더 포함하고, 상기 병렬 프로세서의 제1 커널이 상기 입출력 태스크의 처리 결과를 상기 경량 터널에 전송하는 단계를 더 포함할 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 데이터 송수신 채널을 설정하는 단계는, 상기 병렬 프로세서의 경량 커널과 상기 병렬 프로세서의 제1 커널이 상기 공유 메모리에 상기 입출력 태스크를 요구하는 큐 및 상기 입출력 태스크의 처리 결과를 응답하는 큐 중 적어도 하나를 설정하는 단계를 포함할 수 있다.
본 발명에 따른 멀티 커널 시스템의 입출력 처리 방법에 있어서, 상기 채널은, 원형 큐(circular queue) 기반의 채널일 수 있다.
또한, 본 발명에 따르면, 병렬 프로세서의 제1 커널; 상기 병렬 프로세서의 제1 커널과 공유 메모리를 설정하고, 상기 공유 메모리를 이용하여 상기 병렬 프로세서의 제1 커널과 데이터 송수신 채널을 설정하는 상기 병렬 프로세서의 경량 커널; 및 상기 병렬 프로세서의 제1 커널로부터 상기 입출력 태스크를 수신하고, 상기 수신된 입출력 태스크에 대응되는 동작을 처리하는 메인 프로세서의 제2 커널을 포함하고, 상기 메인 프로세서의 제2 커널은, DMA(Dynamic Memory Access) 방식을 기반으로 상기 입출력 태스크에 대응되는 데이터를 상기 경량 커널에 전달하는 멀티 커널 시스템이 제공될 수 있다.
본 발명에 따른 멀티 커널 시스템에 있어서, 상기 메인 프로세서의 제2 커널은, 상기 입출력 태스크의 처리 결과를 상기 병렬 프로세서의 제1 커널에 전송하고, 상기 병렬 프로세서의 제1 커널은, 상기 입출력 태스크의 처리 결과를 상기 경량 터널에 전송할 수 있다.
본 발명에 따른 멀티 커널 시스템에 있어서 상기 병렬 프로세서의 경량 커널과 상기 병렬 프로세서의 제1 커널은 상기 공유 메모리에 상기 입출력 태스크를 요구하는 큐 및 상기 입출력 태스크의 처리 결과를 응답하는 큐 중 적어도 하나를 설정할 수 있다.
또한, 본 발명에 따르면, 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체를 포함하는 컴퓨팅 디바이스로서, 상기 프로그램은, 멀티 커널 시스템에서 입출력 처리하는 동작을 실행하도록 구성되고, 상기 멀티 커널 시스템의 입출력 처리하는 동작은, 메인 프로세서의 제1 커널과 병렬 프로세서의 경량 커널 사이의 공유 메모리를 설정하는 단계; 상기 공유 메모리를 사용하여, 상기 메인 프로세서의 제1 커널과 상기 병렬 프로세서의 경량 커널 사이의 데이터 송수신 채널을 설정하는 단계; 상기 데이터 송수신 채널을 기반으로 상기 경량 커널에서 발생되는 입출력 태스크를 상기 메인 프로세서의 제1 커널에 전달하는 단계; 상기 메인 프로세서의 제1 커널이 상기 입출력 태스크에 대응되는 동작을 처리하는 단계; 및 상기 처리 결과를 상기 경량 커널에 전달하는 단계를 수행하는 컴퓨터로 판독 가능한 기록 매체를 포함하는 컴퓨팅 디바이스가 제공될 수 있다.
본 개시에 대하여 위에서 간략하게 요약된 특징들은 후술하는 본 개시의 상세한 설명의 예시적인 양상일 뿐이며, 본 개시의 범위를 제한하는 것은 아니다.
본 개시에 대하여 위에서 간략하게 요약된 특징들은 후술하는 본 개시의 상세한 설명의 예시적인 양상일 뿐이며, 본 개시의 범위를 제한하는 것은 아니다.
본 개시에 따르면, 경량 커널에서 발생되는 입출력을 효과적으로 처리할 수 있는 방법 및 장치가 제공될 수 있다.
또한, 본 개시에 따르면, 병렬 프로세서의 설치된 커널에 파일 입/출력을 오프로드하고 DMA(Dynamic Memory Access)기반으로 고속의 파일 입/출력을 수행하는 방법 및 장치가 제공될 수 있다.
본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 개시의 일 실시 예에 따른 파일 입출력 처리 방법이 적용되는 디바이스의 구성을 예시하는 도면이다.
도 2는 도 1의 디바이스가 공유 메모리를 설정하는 동작을 나타내는 도면이다.
도 3은 도 1의 디바이스가 공유 메모리를 사용하여 입출력 태스크를 처리하는 동작을 예시하는 도면이다.
도 4는 본 개시의 일 실시 예에 따른 파일 입출력 처리 방법의 순서를 도시하는 흐름도이다.
도 5는 본 개시의 다른 실시 예에 따른 파일 입출력 처리 방법의 순서를 도시하는 흐름도이다.
도 6은 본 개시의 일 실시 예에 따른 병렬 프로세서의 경량 커널과 병렬 프로세서의 커널간 공유 메모리를 설정하는 과정을 나타내는 도면이다.
도 7은 본 개시의 일 실시 예에 따른 병렬 프로세서의 경량 커널과 병렬 프로세서의 커널간 채널을 설정하는 과정을 나타내는 도면이다.
도 8은 본 개시의 일 실시 예에 따른 경량 커널의 응용 프로그램에서 메인 프로세서의 커널 및 병렬 프로세서의 커널로 파일을 입/출력 오프로딩하는 과정을 나타내는 흐름도이다.
도 9는 본 개시의 일 실시 예에 따른 병렬 프로세서의 경량 커널과 메인 프로세서의 커널 및 병렬 프로세서의 커널간 파일 입/출력 오프로딩 과정을 나타내는 블록도이다.
도 10은 본 개시의 일 실시 예에 따른 병렬 프로세서의 경량 커널과 메인 프로세서의 커널 및 병렬 프로세서의 커널간 파일 입/출력 오프로딩 시스템 구조를 나타내는 도면이다.
이하에서는 첨부한 도면을 참고로 하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
본 개시의 실시 예를 설명함에 있어서 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그에 대한 상세한 설명은 생략한다. 그리고, 도면에서 본 개시에 대한 설명과 관계없는 부분은 생략하였으며, 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 개시에 있어서, 어떤 구성요소가 다른 구성요소와 "연결", "결합" 또는 "접속"되어 있다고 할 때, 이는 직접적인 연결관계뿐만 아니라, 그 중간에 또 다른 구성요소가 존재하는 간접적인 연결관계도 포함할 수 있다. 또한 어떤 구성요소가 다른 구성요소를 "포함한다" 또는 "가진다"고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 배제하는 것이 아니라 또 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 개시에 있어서, 제1, 제2 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용되며, 특별히 언급되지 않는 한 구성요소들간의 순서 또는 중요도 등을 한정하지 않는다. 따라서, 본 개시의 범위 내에서 일 실시 예에서의 제1 구성요소는 다른 실시 예에서 제2 구성요소라고 칭할 수도 있고, 마찬가지로 일 실시 예에서의 제2 구성요소를 다른 실시 예에서 제1 구성요소라고 칭할 수도 있다.
본 개시에 있어서, 서로 구별되는 구성요소들은 각각의 특징을 명확하게 설명하기 위함이며, 구성요소들이 반드시 분리되는 것을 의미하지는 않는다. 즉, 복수의 구성요소가 통합되어 하나의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있고, 하나의 구성요소가 분산되어 복수의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있다. 따라서, 별도로 언급하지 않더라도 이와 같이 통합된 또는 분산된 실시 예도 본 개시의 범위에 포함된다.
본 개시에 있어서, 다양한 실시 예에서 설명하는 구성요소들이 반드시 필수적인 구성요소들은 의미하는 것은 아니며, 일부는 선택적인 구성요소일 수 있다. 따라서, 일 실시 예에서 설명하는 구성요소들의 부분집합으로 구성되는 실시 예도 본 개시의 범위에 포함된다. 또한, 다양한 실시 예에서 설명하는 구성요소들에 추가적으로 다른 구성요소를 포함하는 실시 예도 본 개시의 범위에 포함된다.
이하, 첨부한 도면을 참조하여 본 개시의 실시 예들에 대해서 설명한다.
도 1은 본 개시의 일 실시 예에 따른 파일 입출력 처리 방법이 적용되는 디바이스의 구성을 예시하는 도면이다.
도 1을 참조하면, 파일 입출력 처리 방법이 적용되는 디바이스는 메인 프로세서(11) 및 병렬 프로세서(15)를 구비할 수 있다. 메인 프로세서(11)와 병렬 프로세서(15)는 별도의 컴포넌트들 내에 배치된 하나 이상의 프로세서를 포함할 수 있거나, 대안으로서, 단일 컴포넌트(가령, 시스템 온 칩(SoC) 구성) 내에 구현된 하나 이상의 프로세싱 코어와 임의의 프로세서 관련 지원 회로(가령, 브릿징 인터페이스 등)를 포함할 수 있다. 프로세서의 예는, Pentium, Xeon, Itanium, Celerron, Atom, Core i-series, Quark product families, Advanced RISC(가령, 축소 명령어 세트 컴퓨팅) 머신 또는 "ARM" 프로세서 등의 마이크로프로세서를 구비한 인텔 코퍼레이션로부터 입수 가능한 다양한 x86 계열 마이크로프로세서를 포함할 수 있지만 이에 한정되는 것은 아니다.
메인 프로세서(11)는 입출력 장치(13)에 연결될 수 있으며, 커널(FWK, Full Weight Kernel)(110)이 탑재될 수 있다. 커널(110)은 메모리의 읽기/쓰기(read/write), 태스크 실행, 입출력 장치(예, 디스플레이, 키보드, 마우스, 네트워크 장치 등)(13)와의 데이터 송수신을 제어할 수 있다. 상기 커널(FWK)(110)은 리눅스(Linux) 운영 체제일 수 있다. 이하, 본 발명의 일 실시예에서 상기 메인 프로세서(11)에 탑재되는 커널(FWK)(110)을 리눅스(Linux) 기반의 커널을 예시하나, 본 발명이 이를 한정하는 것은 아니며, 다양한 커널(FWK)이 사용될 수 있음은 물론이다.
병렬 프로세서(15)는 요구되는 태스크 등을 처리하기 위한 경량 커널(LWK; Light Weight Kernel)(120)을 구비할 수 있다. 경량 커널(120)은 연산 위주의 응용 프로그램(150)을 빠르게 처리하기 위해 최소한의 소프트웨어 스택을 구비할 수 있다. 경량 커널(120)은 운영체제 또는 커널 사이의 간섭을 최소화하기 위해 입/출력을 처리하기 위한 소프트웨어 스택을 구비하고 있지 않다. 따라서, 경량 커널(120)은 파일 입/출력을 필요로 하는 응용 프로그램(150)에서 요청되는 태스크의 처리시, 입출력 장치(13)에 접근할 수 없는 문제가 발생한다. 이러한 점을 고려하여, 병렬 프로세서(15)는 메인 프로세서(11)와의 연동에 의해 입출력 장치(13)에 접근할 수 있으며, 해당 태스크를 처리할 수 있다.
구체적으로, 병렬 프로세서(15)는 커널(FWK, Full Weight Kernel)(130)이 탑재될 수 있다. 상기 커널(130)은 메인 프로세서(11)에 탑재된 커널(110)과 연동될 수 있는 커널로 구비될 수 있다. 예컨대, 상기 커널(130)은 메인 프로세서(11)에 탑재된 커널(110)과 마찬가지로, 리눅스(Linux) 기반의 커널을 포함할 수 있다. 그리고, 메인 프로세서(11)에 탑재된 커널(110)과, 병렬 프로세서(15)에 탑재된 커널은 SCIF(Symmetric Communications InterFace)를 설정하여 연결될 수 있다.
이러한 환경에서, 병렬 프로세서(15)에 구비되는 경량 커널(120)의 운영 환경에서 입/출력 태스크의 처리가 요구될 경우, 메인 프로세서(11)에 탑재된 커널(110)로 입/출력 태스크의 처리를 요청하고, 그 결과를 수신하여 해당 입/출력 태스크 처리를 완료할 수 있다.
예를 들어, 메인 프로세서(11)와 병렬 프로세서(15)는 공유 메모리를 사용하여 입/출력 태스크 처리를 수행할 수 있다. 즉, 메인 프로세서(11)와 병렬 프로세서(15) 사이에 공유 메모리를 설정하고 입/출력 태스크의 요청 및 결과를 공유 메모리를 통해 읽기/쓰기(read/write)함으로써, 입/출력 태스크를 처리할 수 있다.
이를 위해, 메인 프로세서(11)의 커널(110)과 병렬 프로세서(15)의 커널(130)은 공유 메모리를 설정하는 동작을 수행할 수 있다. 그리고, 병렬 프로세서(15)의 커널(130)은 설정된 공유 메모리의 물리 주소를 추출하고, 추출된 공유 메모리에 대한 물리 주소를 경량 커널(120)에 전달할 수 있으며, 경량 커널(120)은 공유 메모리의 물리 주소를 소정의 가상 주소로 매핑하여 관리할 수 있다. 그리고, 경량 커널(120)은 응용 프로그램(150)의 태스크 중 입/출력 태스크가 발생됨에 따라, 공유 메모리 가상 주소를 사용하여 입/출력 태스크를 처리할 수 있다.
이와 같은 구조의 공유 메모리를 구비함으로써, 병렬 프로세서(15)에 구비되는 경량 커널(120)과, 메인 프로세서(11)에 탑재된 커널(110) 사이에서 입/출력 태스크에 대한 데이터 전송 채널을 구축하고 입/출력 태스크 처리에 대한 오프로드(Offload) 처리 환경을 구축할 수 있다.
이로써, 경량 커널(120)은 입/출력 태스크를 위해 추가적인 소프트웨어 스택을 구축할 필요가 없을 뿐만 아니라, 입/출력 태스크 처리 시에 경량 커널(120)에서 간섭을 최소화할 수 있다.
도 2는 도 1의 디바이스가 공유 메모리를 설정하는 동작을 나타내는 도면이다.
이하, 도 2를 참조하여, 메인 프로세서(11)와 병렬 프로세서(15) 사이의 공유 메모리를 설정하는 동작을 상세하게 설명한다.
본 개시의 실시예에서는, 메인 프로세서(11)는 제온(Xeon) 프로세서를 예시하고, 병렬 프로세서(15)는 제온 파이(Xeon Phi) 프로세서를 예시한다.
우선, 메인 프로세서(예를 들어, 제온 프로세서)(11)는 커널(예, 리눅스(Linux))(210)을 탑재할 수 있다. 그리고, 병렬 프로세서(15)는 적어도 하나의 코어(201)와 소정 영역의 메모리(202)를 사용하여 커널(예, 리눅스(Linux))(220)을 탑재할 수 있다. 그리고, 병렬 프로세서(15)는 내부에 구비된 코어들 중, 리눅스가 설치된 상기 적어도 하나의 코어(201)를 제외한 나머지 코어(205-1, ..., 205-n)와, 리눅스가 설치된 소정 영역의 메모리(202)를 제외한 나머지 영역의 메모리(205)에 경량 커널(220)을 탑재할 수 있다.
그리고, 메인 프로세서(11)의 커널(210)과 병렬 프로세서(15)의 커널(220) 사이의 SCIF를 이용하여 공유 메모리를 설정할 수 있다. 즉, 메인 프로세서(11)의 커널(210)과 병렬 프로세서(15)의 커널(220) 사이의 공유 메모리로서 사용할 물리 주소(250)를 설정할 수 있으며, 병렬 프로세서(15)의 커널(220)은 공유 메모리로서 사용되는 물리 주소(250)를 저장할 수 있다. 그리고, 병렬 프로세서(15)의 경량 커널(230)은 상기 병렬 프로세서(15)의 커널(220)에 저장된 공유 메모리의 물리 주소(250)를 확인하고, 경량 커널(230)에서 사용하는 가상 주소(253)에 매핑하여 관리할 수 있다. 이에 따라, 경량 커널(230)은 상기 메인 프로세서(11)의 커널(210)과 공유 메모리를 운영할 수 있다.
도 3은 도 1의 디바이스가 공유 메모리를 사용하여 입출력 태스크를 처리하는 동작을 예시하는 도면이다.
메인 프로세서(11)의 커널(210)은 입출력 태스크를 처리하는 입출력 태스크 처리부(301)를 구비할 수 있다. 입출력 태스크 처리부(301)는 입출력 장치(13)와 연결되어, 커널(210) 내부에서 발생되는 입출력 태스크 또는 커널(210) 외부의 응용 프로그램(미 도시)에서 발생되는 입출력 태스크를 확인하고, 대응되는 입출력 장치에 접근하여 입출력 태스크의 처리를 수행한다.
메인 프로세서(11)의 커널(210)과, 병렬 프로세서(15)의 경량 커널(230) 사이에 설정된 공유 메모리(310)에는 입출력 태스크의 처리를 위한 영역이 설정될 수 있다. 구체적으로, 공유 메모리(310)에는 경량 커널(230)이 입출력 태스크를 요구하는 큐가 구비될 수 있으며, 예컨대, 입출력 태스크를 요구하는 큐는 입출력 요구 원형 큐(311)를 포함할 수 있다. 그리고, 공유 메모리(310)에는 메인 프로세서(11)의 커널(210)이 입출력 태스크의 처리 결과를 응답하는 큐가 구비될 수 있으며, 예컨대, 입출력 태스크의 처리 결과를 응답하는 큐는 입출력 응답 원형 큐(315)를 포함할 수 있다.
메인 프로세서(11)의 커널(210)과, 병렬 프로세서(15)의 경량 커널(230)은 각각 입출력 요구 원형 큐(311)와 입출력 응답 원형 큐(315)가 설정된 공유 메모리(310)의 물리 주소와 가상 주소를 매핑한 정보를 관리할 수 있으며, 이와 같은 환경에서, 경량 커널(230)에서 운영되는 응용 프로그램(305)에서 입/출력 태스크가 발생될 경우, 입/출력 태스크(예, open, read, write, close 등)와 관련된 파라미터(예, file path, file descriptor, flag, mode, id, type 등)가 입/출력 요구 원형 큐(311)에 추가된다.
메인 프로세서(11)의 커널(210)에서 대기중인 입출력 태스크 처리부(301)는 입/출력 요구 원형 큐(311)에서 입/출력 명령을 순차적으로 추출할 수 있다. 그리고, 입출력 태스크 처리부(301)는 입출력 장치(13)에 입/출력 명령을 전달하고, 입출력 장치(13)가 해당되는 입/출력 명령을 처리할 수 있다. 이에 따라, 입출력 태스크 처리부(301)는 입출력 장치(13)로부터 입/출력 명령을 수행한 결과를 전달받는다.
그리고, 입출력 태스크 처리부(301)는 입출력 장치(13)에서 수행된 입/출력 명령의 결과를 입/출력 응답 원형 큐(315)에 추가한다. 이후, 경량 커널(230)의 응용 프로그램은 입/출력 응답 원형 큐(315)에 순차적으로 적재된 입/출력 결과를 추출할 수 있다.
고성능 컴퓨팅에서 파일 입/출력을 병렬적으로 처리하는 기술이 존재하기는 하지만, 특정 커널(예, 리눅스 등)에서만 지원되기 때문에 경량 커널에 적용하기에는 어려움이 있다. 또한 파일 입/출력을 병렬적으로 처리하기 위한 별도의 프로그램(예, NAS, Lustre 등)를 탑재하게 되면 프로세서의 컴퓨팅 오버헤드로 인해 응용 프로그램을 수행하는데 간섭이 발생할 수 있으며, 이로 인한 성능 저하가 발생될 수 있다.
전술한 본 발명의 일 실시예에 따르면, 특정 커널(예, 리눅스 등)에서뿐 아니라 다양한 운영 체제에서 파일 입/출력을 병렬적으로 처리할 수 있다. 또한, 파일 입/출력을 병렬적으로 처리하기 위한 별도의 프로그램 없이 파일 입/출력을 병렬적으로 처리할 수 있으므로, 프로세서의 컴퓨팅 오버헤드나, 응용 프로그램 처리의 간섭 없이 빠르고 안정적으로 병렬 처리를 실현할 수 있다.
도 4는 본 개시의 일 실시 예에 따른 파일 입출력 처리 방법의 순서를 도시하는 흐름도이다.
도 4에 개시된 파일 입출력 처리 방법은 도 1 내지 3에서 전술한 메인 프로세서(11)가 파일을 입출력 처리하는 것을 예시한다.
우선, S401 단계에서, 메인 프로세서(11)는 병렬 프로세서(15)와의 공유 메모리를 설정할 수 있다.
예를 들어, 메인 프로세서(11)는 입출력 장치(13)에 연결될 수 있으며, 커널(FWK, Full Weight Kernel)(110)이 탑재될 수 있다. 커널(110)은 메모리의 읽기/쓰기(read/write), 태스크 실행, 입출력 장치(예, 디스플레이, 키보드, 마우스, 네트워크 장치 등)(13)와의 데이터 송수신을 제어할 수 있다. 이러한 환경에서, 병렬 프로세서(15)에서 운영되는 경량 커널에서 메인 프로세서(11)의 커널에 파일 입/출력을 오프로드(Offload) 하기 위해서 메인 프로세서(11)와 병렬 프로세서(15) 간의 공유 메모리가 설정될 수 있다. 이때, 메인 프로세서(11)의 커널(210)과 병렬 프로세서(15)의 커널(220) 간 공유되는 메모리를 설정하기 위해 Intel®MPSS (Intel®Manycore Platform Software Stack)에 포함된 SCIF(Symmetric Communications InterFace)가 사용될 수 있다.
이때, 메인 프로세서(11)의 커널(210)은 병렬 프로세서(15)의 커널(220)과 공유되는 메모리의 물리 주소를 확인하고, 상기 물리 주소에 대응되는 가상 주소를 할당하여 저장할 수 있다. 그리고, 상기 공유 메모리의 접근시 상기 가상 주소를 사용하여 접근할 수 있다.
한편, 경량 커널(230)은 SCIF를 이용하여 직접 메인 프로세서(11)의 커널(210)과 공유 메모리를 설정할 수 없기 때문에 병렬 프로세서(15)의 일부 자원에 커널(220)를 구비할 수 있다. 그리고, 병렬 프로세서(15)에 구비되는 커널(220)은 메인 프로세서(11)의 커널(210)과 공유 메모리 접근을 위해 사용되는 디바이스 드라이버로 활용될 수 있다.
이와 같이, 공유 메모리의 설정이 완료되면, S402 단계에서 메인 프로세서(11)의 커널(210)과 병렬 프로세서(15)의 경량 커널(230)간 SCIF 공유 메모리 상에서 상호 통신할 수 있는 채널을 설정할 수 있다.
구체적으로, 메인 프로세서(11)의 커널(210)과, 병렬 프로세서(15)의 경량 커널(230) 사이에 설정된 공유 메모리에는 입출력 태스크의 처리를 위한 영역이 설정될 수 있다. 구체적으로, 공유 메모리에는 경량 커널(230)이 입출력 태스크를 요구하는 큐가 설정될 수 있다. 또한, 공유 메모리에는 메인 프로세서(11)의 커널(210)이 입출력 태스크의 처리 결과를 응답하는 큐가 설정될 수 있다. 예를 들어, 경량 커널(230)이 입출력 태스크를 요구하는 큐는 원형 큐(Circular Queue) 기반으로 구비될 수 있다. 또한, 메인 프로세서(11)의 커널(210)이 입출력 태스크의 처리 결과를 응답하는 큐는 원형 큐 기반으로 구비될 수 있다. 이때, 입출력 태스크를 요구하는 큐는 물리 주소와 가상 주소를 매핑한 정보를 기반으로 설정될 수 있다. 또한, 입출력 태스크의 처리 결과를 응답하는 큐는 물리 주소와 가상 주소를 매핑한 정보를 기반으로 설정될 수 있다.
이와 같이, 메인 프로세서(11)의 커널(210)과 병렬 프로세서(15)의 경량 커널(230)간에 채널이 설정되면, 메인 프로세서(11)의 커널(210)은 설정된 채널을 통해 병렬 프로세서(15)의 경량 커널(230)로부터 입/출력 태스크를 수신할 수 있다(S403). 예컨대, 경량 커널(230)은 입출력 태스크가 발생됨에 따라, 해당 입출력 태스크에 대응되는 데이터를 물리 주소와 가상 주소를 매핑한 정보를 기반으로 입출력 태스크를 요구하는 큐에 적재할 수 있다. 상기 적재에 따라 메인 프로세서(11)의 커널(210)은 해당 입출력 태스크에 대응되는 데이터를 수신할 수 있다.
이에 따라, S404 단계에서 메인 프로세서(11)의 커널(210)은 입/출력 태스크의 처리를 수행할 수 있다. 예를 들어, 커널(210)은 입/출력 태스크에 대응되는 입출력 장치(13)를 확인하고, 해당 입출력 장치(13)로 입/출력 태스크의 처리를 요청한다. 그리고, 커널(210)은 입출력 장치(13)로 입/출력 태스크의 처리 결과를 수신한다.
S405 단계에서 커널(210)은 수신된 결과를 입출력 태스크의 처리 결과를 응답하는 큐에 적재함으로써, 입출력 태스크의 처리 결과를 상기 병렬 프로세서(15)의 경량 커널(230)에 전달할 수 있다. 예컨대, 커널(210)은 해당 입출력 태스크의 처리 결과를 물리 주소와 가상 주소를 매핑한 정보를 기반으로 입출력 태스크의 처리 결과를 응답하는 큐에 적재할 수 있다. 상기 적재에 따라 경량 커널(230)은 해당 입출력 태스크의 처리 결과를 수신할 수 있다.
도 5 본 개시의 다른 실시 예에 따른 파일 입출력 처리 방법의 순서를 도시하는 흐름도이다.
도 5에 개시된 파일 입출력 처리 방법은 도 1 내지 3에서 전술한 병렬 프로세서(15)가 파일을 입출력 처리하는 것을 예시한다.
우선, S501 단계에서, 병렬 프로세서(15)는 메인 프로세서(11)와의 공유 메모리를 설정할 수 있다.
예를 들어, 메인 프로세서(11)의 커널(210)과 병렬 프로세서(15)의 커널(220) 사이의 SCIF를 이용하여 공유 메모리를 설정할 수 있다. 즉, 메인 프로세서(11)의 커널(210)과 병렬 프로세서(15)의 커널(220)간 공유 메모리로서 사용할 물리 주소를 설정할 수 있다. 병렬 프로세서(15)는 경량 커널(230)에 직접 메인 프로세서(11)의 커널(210)과 공유하는 공유 메모리를 설정할 수 없기 때문에 병렬 프로세서(15)의 일부 자원에 커널(220)를 구비할 수 있다. 그리고, 병렬 프로세서(15)에 구비되는 커널(220)은 메인 프로세서(11)의 커널(210)과의 공유 메모리 접근을 위해, 메인 프로세서(11)의 커널(210)과 병렬 프로세서(15)의 커널(220)간 공유되는 메모리를 설정할 수 있다.
그리고, S502 단계에서 병렬 프로세서(15)의 커널(220)은 메인 프로세서(11)의 커널(210)에서 공유되는 메모리의 물리 주소를 확인하고, 이를 저장할 수 있다.
한편, 메인 프로세서(11)의 커널(210)과 병렬 프로세서(15)의 커널(220) 사이에 공유되는 메모리에 대한 물리주소를 경량 커널(230)에서 사용하기 위해서는 경량 커널(230)에서 메모리의 설정이 요구된다. 이를 위해, S511 단계에서 경량 커널(230)은 병렬 프로세서(15)의 커널(220)에 공유 메모리로서 설정 및 저장된 물리 주소를 확인할 수 있다. 그리고, S512 단계에서 경량 커널(230)은 확인된 공유 메모리의 물리 주소를 경량 커널(230)에서 사용하는 가상 주소로 매핑할 수 있다(S512).
한편, 이와 같이, 경량 커널(230)에서 공유 메모리의 가상 주소 매핑이 완료되면, S513 단계에서 병렬 프로세서(15)의 경량 커널(230)은 메인 프로세서(11)의 커널(210)과 SCIF 공유 메모리 상에서 상호 통신할 수 있는 채널을 설정할 수 있다.
구체적으로, 메인 프로세서(11)의 커널(210)과, 병렬 프로세서(15)의 경량 커널(230)간에 설정된 공유 메모리에는 입출력 태스크의 처리를 위한 영역이 설정될 수 있다. 구체적으로, 공유 메모리에는 경량 커널(230)이 입출력 태스크를 요구하는 큐가 설정될 수 있다. 또한, 공유 메모리에는 메인 프로세서(11)의 커널(210)이 입출력 태스크의 처리 결과를 응답하는 큐가 설정될 수 있다. 예를 들어, 경량 커널(230)이 입출력 태스크를 요구하는 큐는 원형 큐(Circular Queue) 기반으로 구비될 수 있다. 또한, 메인 프로세서(11)의 커널(210)이 입출력 태스크의 처리 결과를 응답하는 큐는 원형 큐 기반으로 구비될 수 있다. 나아가, 입출력 태스크를 요구하는 큐는 입출력 요구 원형 큐로 예시할 수 있으며, 입출력 태스크의 처리 결과를 응답하는 큐는 입출력 응답 원형 큐로 예시할 수 있다.
이와 같이, 병렬 프로세서(15)의 경량 커널(230)과 메인 프로세서(11)의 커널(210) 사이에 채널이 설정되면, S514 단계에서 병렬 프로세서(15)의 경량 커널(230)은 설정된 채널을 통해 메인 프로세서(11)의 커널(210)로 입/출력 태스크를 요청할 수 있다. 예를 들어, 경량 커널(230)은 응용 프로그램에서 입출력 태스크를 확인하고, 입/출력 태스크(예, open, read, write, close 등)와 관련된 파라미터(예, file path, file descriptor, flag, mode, id, type 등)를 물리 주소와 가상 주소를 매핑한 정보를 기반으로 입/출력 요구 원형 큐(311)에 적재한다. 이에 대응하여, 메인 프로세서(11)의 커널(210)은 제어 신호에 해당되는 입/출력 태스크 처리를 수행하고, 그 결과를 제공할 수 있다. 이때, 메인 프로세서(11)의 커널(210)은 입/출력 태스크를 수행한 결과를 물리 주소와 가상 주소를 매핑한 정보를 기반으로 입출력 응답 원형 큐에 적재할 수 있다. 단계 S515에서 병렬 프로세서(15)의 경량 커널(230)은 입출력 응답 원형 큐에 적재된 데이터를 통해 입/출력 태스크 처리 결과를 수신할 수 있다(S515).
이하 병렬 프로세서의 일부 자원(예를 들어, 코어, 메모리)에 커널을 설치하고, 상기 설치된 커널에 파일 입/출력을 오프로드하고 DMA(Dynamic Memory Access)기반으로 고속의 파일 입/출력을 수행하는 방법을 후술한다. 상기 DMA 기반의 고속 파일 입/출력 방법은 경량 커널 내에 고속의 파일 입/출력를 위해 추가적인 파일 시스템 소프트웨어 스택을 구축할 필요가 없을 뿐만 아니라, 파일 입/출력 처리시 경량 커널에서의 간섭을 최소화 할 수 있다.
본 개시의 실시예에서는, 메인 프로세서는 제온(Xeon) 프로세서를 예시하고, 병렬 프로세서는 제온 파이(Xeon Phi) 프로세서를 예시한다.
본 개시의 장치 및/또는 방법은 병렬 프로세서의 경량 커널에서 파일 입/출력을 수행하기 위해 병렬 프로세서에 커널을 설치하여 디바이스 드라이버처럼 활용할 수 있다. 즉, 병렬 프로세서의 경량 커널과 병렬 프로세서의 커널에 공유 메모리 영역을 만들고, 상기 공유 메모리 영역을 이용하여 병렬 프로세서의 경량 커널이 병렬 프로세서의 커널에 파일 입/출력 오프로드할 파일 입/출력 명령(또는 입출력 태스크)을 전달할 수 있다. 병렬 프로세서의 커널은 상기 전달 받은 파일 입/출력 명령 내에 존재하는 병렬 프로세서의 경량 커널의 물리주소를 병렬 프로세서의 커널의 가상주소로 변환할 수 있다. 상기 변환을 통해 마치 병렬 프로세서의 커널에 속하는 메모리에 대해 파일 입/출력을 수행하는 것처럼 만들 수 있다. 병렬 프로세서의 커널에서 변환된 파일 입/출력 명령이 수행되면 메인 프로세서의 커널에 파일 입/출력 명령이 전달 및 수행될 수 있다. 그리고, 메인 프로세서의 커널에서 파일 입/출력 데이터를 DMA를 통해 고속으로 병렬 프로세서의 경량 커널의 메모리로 전송할 수 있다.
즉, 경량 커널에서 고속의 입/출력을 수행하기 위해 병렬 프로세서에서 운영되는 커널과 통신할 수 있는 채널을 만들고, 상기 채널을 이용하여 경량 커널에서 발생하는 입/출력을 병렬 프로세서의 커널에 오프로드할 수 있다. 그리고, 상기 오프로드된 파일 입/출력은 병렬 프로세서의 커널 및 메인 프로세서의 커널을 통해 병렬 프로세서의 경량 커널의 메모리로 파일 데이터가 전송될 수 있다. 상기 파일 데이터의 전송 시 DMA 방식이 이용될 수 있다.
병렬 프로세서에서 운영되는 경량 커널에서 병렬 프로세서의 커널(예를 들어, 리눅스)에 파일 입/출력을 오프로드 하기 위해서 경량 커널의 입/출력 명령을 병렬 프로세서의 커널에 전달하여야 한다. 병렬 프로세서의 경량 커널과 병렬 프로세서의 커널간의 공유 메모리를 설정하고 공유 메모리를 기반으로 채널을 구성함으로써 경량 커널의 입/출력 명령을 병렬 프로세서의 커널로 전달할 수 있다. 즉, 병렬 프로세서의 경량 커널과 병렬 프로세서의 커널간 공유할 메모리에 대한 물리주소를 설정하고, 설정된 물리주소에 대해 경량 커널과 커널 각각이 자신의 가상주소로 매핑하면 병렬 프로세서의 경량 커널과 병렬 프로세서의 커널간 공유되는 메모리로 사용할 수 있다. 상기 공유된 메모리를 이용하여 병렬 프로세서의 경량 커널과 병렬 프로세서의 커널간 상호 통신할 수 있는 채널을 구성할 수 있다. 상기 채널은 원형 큐(circular queue) 기반의 채널일 수 있다. 상기 채널을 이용하여 병렬 프로세서의 경량 커널에서 발생하는 입/출력 명령을 병렬 프로세서의 커널에 전달할 수 있다.
한편, 파일 입/출력을 수행하기 위해서는 데이터를 입출력할 메모리 주소가 필요하다. 병렬 프로세서의 경량 커널에서 병렬 프로세서의 커널로 전달되는 파일 입/출력 명령은 병렬 프로세서의 경량 커널의 데이터에 대한 물리주소를 포함할 수 있다. 병렬 프로세서의 경량 커널과 병렬 프로세서의 커널은 하나의 물리주소에 대해 자신의 가상주소를 가지는데 상대의 가상주소를 가지고 메모리에 대한 물리주소를 추출할 수 없기 때문이다. 병렬 프로세서의 커널은 경량 커널로부터 전달받은 물리주소에 해당하는 메모리를 병렬 프로세서의 커널에서 사용하기 위해 상기 전달받은 물리주소를 병렬 프로세서의 커널의 가상주소로 매핑할 수 있다. 병렬 프로세서의 커널은 매핑된 가상주소를 이용하여 새롭게 입/출력 명령을 구성할 수 있다. 따라서, 상기 과정을 통해 병렬 프로세서의 커널은 자신의 메모리에 대해 파일 입/출력 명령을 수행하는 것과 같이 동작할 수 있다.
병렬 프로세서의 커널에서 해당 파일 입/출력 명령을 수행하면 병렬 프로세서의 커널의 파일 시스템을 통해 메인 프로세서의 커널에 존재하는 파일 시스템 서버로 파일 입/출력 명령이 전송될 수 있다. 이때 메인 프로세서의 커널에서 DMA를 통해 파일 입/출력 데이터(또는 입출력 태스크에 대응되는 데이터)를 병렬 프로세서의 커널로 전송하기 위해서는 데이터를 입출력할 메모리 주소가 필요하다. 따라서, 병렬 프로세서의 커널에서 전달되는 파일 입/출력 명령에도 파일 입/출력할 데이터의 물리주소가 포함될 수 있다.
메인 프로세서의 커널의 파일 시스템 서버는 수신된 파일 입/출력 명령에 해당하는 파일에 대한 정보를 파일 시스템으로부터 추출할 수 있다. 또한, 메인 프로세서의 커널의 파일 시스템 서버는 상기 추출된 정보를 이용하여 DMA 엔진에 입/출력할 파일 정보와 병렬 프로세서의 메모리에 대한 물리주소를 전송할 수 있다. 상기 DMA 엔진은 상기 파일 입/출력 데이터를 병렬 프로세서의 경량 커널의 메모리로 DMA를 통해 전송할 수 있다.
메인 프로세서의 커널의 파일 시스템 서버는 입/출력 결과(또는 입출력 태스크의 처리 결과)를 병렬 프로세서의 커널로 전송할 수 있다. 병렬 프로세서의 커널은 상기 전송된 입/출력 결과를 병렬 프로세서의 경량 커널과 병렬 프로세서의 커널 사이의 채널을 통해 병렬 프로세서의 경량 커널로 전송할 수 있다.
병렬 프로세서의 커널은 파일 입/출력 오프로드를 하기 위한 디바이스 드라이버처럼 사용되기 때문에 최소의 코어와 메모리를 이용할 수 있다. 나머지 코어들과 메모리는 병렬 프로세서의 경량 커널에서 사용하여 응용 프로그램을 수행할 수 있다.
본 개시의 병렬 프로세서의 경량 커널은 병렬 프로세서의 커널과 공유 메모리를 설정할 수 있다. 또한, 병렬 프로세서의 경량 커널은 병렬 프로세서의 커널과 파일 입/출력 명령을 전송하는 채널을 형성할 수 있다. 또한, 병렬 프로세서의 경량 커널은 병렬 프로세서의 경량 커널의 응용 프로그램의 입/출력 버퍼에 대한 물리주소를 추출할 수 있다. 또한, 병렬 프로세서의 경량 커널은 파일 입/출력 명령을 병렬 프로세서의 커널로 전송할 수 있다. 또한, 병렬 프로세서의 경량 커널은 병렬 프로세서의 커널 및 메인 프로세서의 커널에서 수행된 파일 입/출력 결과를 수신할 수 있다.
본 개시의 병렬 프로세서의 커널은 병렬 프로세서의 경량 커널과 공유 메모리를 설정할 수 있다. 또한, 병렬 프로세서의 커널은 병렬 프로세서의 경량 커널과 파일 입/출력 명령을 전송하는 채널을 형성할 수 있다. 또한, 병렬 프로세서의 커널은 병렬 프로세서의 경량 커널의 전체 물리주소를 병렬 프로세서의 커널의 가상주소로 매핑할 수 있다. 또한, 병렬 프로세서의 커널은 병렬 프로세서의 경량 커널에서 전송된 파일 입/출력 명령을 수신할 수 있다. 또한, 병렬 프로세서의 커널은 병렬 프로세서의 경량 커널에서 수신된 버퍼의 물리주소를 병렬 프로세서의 커널의 가상주소로 변환할 수 있다. 또한, 병렬 프로세서의 커널은 상기 수신된 파일 입/출력 명령을 구성 및 수행할 수 있다. 또한, 병렬 프로세서의 커널은 메인 프로세서의 커널로 파일 입/출력 명령을 전송할 수 있다. 또한, 병렬 프로세서의 커널은 메인 프로세서에서 수행된 파일 입/출력 결과를 수신할 수 있다.
본 개시의 메인 프로세서의 커널은 병렬 프로세서의 커널에서 전송된 파일 입/출력 명령을 수신할 수 있다. 또한, 메인 프로세서의 커널은 파일 입/출력을 수행할 수 있다. 또한, 메인 프로세서의 커널은 병렬 프로세서의 커널로 파일 입/출력 결과를 전송할 수 있다. 또한, 메인 프로세서의 커널은 입/출력할 파일의 물리주소에서 병렬 프로세서의 메모리의 물리주소로 파일 입/출력 데이터를 DMA 방식으로 전송할 수 있다.
도 6은 본 개시의 일 실시 예에 따른 병렬 프로세서의 경량 커널과 병렬 프로세서의 커널간 공유 메모리를 설정하는 과정을 나타내는 도면이다.
도 7은 본 개시의 일 실시 예에 따른 병렬 프로세서의 경량 커널과 병렬 프로세서의 커널간 채널을 설정하는 과정을 나타내는 도면이다.
도 6을 참조하면, 병렬 프로세서(예를 들어, 제온 파이)(600)는 적어도 하나의 코어와 소정 영역의 메모리(612)를 이용하여 커널(예를 들어, 리눅스)(610)을 탑재할 수 있다. 그리고, 병렬 프로세서(600)는 내부에 구비된 코어들 중, 리눅스가 설치된 상기 적어도 하나의 코어를 제외한 나머지 코어들과 리눅스가 설치된 소정 영역의 메모리(612)를 제외한 나머지 영역의 메모리(622)를 이용하여 경량 커널(620)을 탑재할 수 있다. 그리고, 병렬 프로세서의 커널(610)과 병렬 프로세서의 경량 커널(620)간 공유 메모리(630)를 설정할 수 있다.
도 7을 참조하면, 병렬 프로세서(700)의 커널(710)과 병렬 프로세서(700)의 경량 커널(720) 사이에 설정된 공유 메모리(730)에는 입출력 태스크의 처리를 위한 영역이 설정될 수 있다. 구체적으로, 공유 메모리(730)에는 경량 커널(720)이 입출력 태스크를 요구하는 큐가 구비될 수 있으며, 예컨대, 경량 커널(720)의 응용 프로그램(722)에서 발생한 입출력 명령을 커널(710)의 입출력 오프로드 프록시(IO offload proxy)에 전송하는 파일 입출력 요구 원형 큐(732)를 포함할 수 있다. 또한, 공유 메모리(730)에는 커널(710)이 입출력 태스크의 처리 결과를 응답하는 큐가 구비될 수 있으며, 예컨대, 커널(710)의 입출력 오프로드 프록시(712)에서 수행된 입/출력 결과를 전송하는 파일 입출력 응답 원형 큐(734)를 포함할 수 있다.
도 8은 본 개시의 일 실시 예에 따른 경량 커널의 응용 프로그램에서 메인 프로세서의 커널 및 병렬 프로세서의 커널로 파일을 입/출력 오프로딩하는 과정을 나타내는 흐름도이다.
S801 단계에서 경량 커널의 응용 프로그램은 입/출력 명령(예를 들어, read(fd, va_lwk, count)을 수행할 수 있다.
S802 단계에서 경량 커널은 파일 입/출력 명령에 관련된 파라미터(또는 입/출력 태스크와 관련된 파라미터)(예를 들어, fd, pa, count)를 가지는 메시지를 입/출력 요구 원형큐에 추가하여 병렬 프로세서의 커널로 전송할 수 있다. 그리고, 병렬 프로세서의 커널에서 대기 중인 입/출력 오프로드 프록시는 입/출력 요구 원형큐로부터 파일 입/출력 명령에 관련된 파라미터를 가지는 메시지를 수신할 수 있다.
S803 단계에서 병렬 프로세서의 커널의 입출력 오프로드 프록시는 PA(Physical Address, 물리주소)를 VA(Virtual Address, 가상주소)로 변환할 수 있다 (pa → va_linux).
S804 단계에서 병렬 프로세서의 커널의 입출력 오프로드 프록시는 파일 입/출력 명령(예를 들어, read(fd, va_linx, count)을 구성할 수 있다. 또한, 입출력 오프로드 프록시는 상기 구성된 파일 입/출력 명령을 수행할 수 있다.
S805 단계에서 병렬 프로세서의 커널은 파일 입/출력 명령에 관련된 파라미터(예를 들어, fd, pa, count)를 가지는 메시지를 메인 프로세서의 커널에 있는 파일 시스템 서버로 전송할 수 있다.
S806 단계에서 메인 프로세서의 커널의 파일 시스템 서버는 수신된 파일 입/출력 명령에 해당되는 파일에 대한 정보를 파일 시스템으로부터 추출할 수 있다.
S807 단계에서 메인 프로세서의 커널은 DMA 엔진에 입/출력할 파일의 물리주소와 병렬 프로세서의 메모리에 대한 물리주소를 입력할 수 있다.
S808 단계에서 DMA 엔진은 파일 입/출력 데이터를 병렬 프로세서의 메모리로 전송할 수 있다. 상기 전송은 DMA 방식이 이용될 수 있다.
도 9는 본 개시의 일 실시 예에 따른 병렬 프로세서의 경량 커널과 메인 프로세서의 커널 및 병렬 프로세서의 커널간 파일 입/출력 오프로딩 과정을 나타내는 블록도이다.
본 개시의 메인 프로세서(900)은 커널(901)을 포함할 수 있다.
상기 메인 프로세서(900)의 커널(901)은 파일 서버 구동부(905), 입출력 요청 수신부(906), 입출력 처리부(907) 및/또는 입출력 응답 송신부(908)를 포함할 수 있다.
본 개시의 병렬 프로세서(910)는 경량 커널(920) 및/또는 커널(930)을 포함할 수 있다.
상기 병렬 프로세서(910)의 경량 커널(920)은 공유 메모리 설정부(921), 채널 설정부(922), 응용 프로그램 입출력 버퍼(923), 물리주소 추출부(924), 입출력 요청 송신부(925) 및/또는 입출력 응답 수신부(926)를 포함할 수 있다.
상기 병렬 프로세서(910)의 커널(930)은 공유 메모리 설정부(931), 채널 설정부(932), 경량 커널 메모리 매핑부(933), 입출력 요청 수신부(934), 물리/가상 주소 변환부(935), 입출력 처리부(936), 입출력 요청 송신부(937), 입출력 응답 수신부(938) 및/또는 입출력 응답 송신부(939)를 포함할 수 있다.
병렬 프로세서(910)의 경량 커널(920)의 공유 메모리 설정부(921) 및 병렬 프로세서(910)의 커널(930)의 공유 메모리 설정부(931)는 경량 커널(920) 및 커널(930) 간 공유 메모리를 설정할 수 있다.
병렬 프로세서(910)의 경량 커널(920)의 채널 설정부(922) 및 병렬 프로세서(910)의 커널(930)의 채널 설정부(932)는 상기 설정된 공유 메모리 상에 채널을 설정할 수 있다. 상기 채널은 원형 큐 기반의 채널일 수 있다.
병렬 프로세서(910)의 커널(930)의 경량 커널 메모리 매핑부(933)는 병렬 프로세서(910)의 경량 커널(920)이 사용하는 전체 메모리를 병렬 프로세서(910)의 커널(930)의 가상주소로 매핑시킬 수 있다.
병렬 프로세서(910)의 경량 커널(920)의 물리주소 추출부(924)는 응용 프로그램 입출력 버퍼(923)에 대한 물리주소를 추출할 수 있다.
병렬 프로세서(910)의 경량 커널(920)의 입출력 요청 송신부(925)는 파일 입/출력할 명령에 대한 파라미터를 가지는 메시지를 병렬 프로세서(910)의 커널(930)에 전송할 수 있다.
병렬 프로세서(910)의 커널(930)의 입출력 요청 수신부(934)는 파일 입/출력할 명령에 대한 파라미터를 가지는 메시지를 병렬 프로세서(910)의 경량 커널(920)의 입출력 요청 송신부(925)로부터 수신할 수 있다.
병렬 프로세서(910)의 커널(930)의 물리/가상주소 변환부(935)는 파일 입/출력 명령을 구성하기 위해 전달받은 물리주소를 경량 커널 메모리 매핑부(933)에서 만든 매핑 정보를 이용하여 병렬 프로세서(910)의 커널(930)의 가상주소로 변환할 수 있다.
병렬 프로세서(910)의 커널(930)의 입출력 처리부(936)는 파일 입/출력 명령을 구성하고 파일 입/출력 명령을 실행할 수 있다.
병렬 프로세서(910)의 커널(930)의 입출력 요청 송신부(937)는 파일 입/출력할 명령에 대한 파라미터를 가지는 메시지를 메인 프로세서(900)의 커널(901)로 전송할 수 있다.
메인 프로세서(900)의 커널(901)의 입출력 요청 수신부(906)는 파일 입/출력할 명령에 대한 파라미터를 가지는 메시지를 병렬 프로세서(910)의 커널(930)로부터 수신할 수 있다.
메인 프로세서(900)의 커널(901)의 입출력 처리부(907)는 파일 시스템으로부터 파일 정보를 추출할 수 있다. 또한, 메인 프로세서(900)의 커널(901)의 입출력 처리부(907)는 DMA 엔진에 대해 파일에 대한 DMA 전송을 수행시킬 수 있다.
메인 프로세서(900)의 커널(901)의 입출력 응답 송신부(908)는 파일 입/출력에 대한 결과를 병렬 프로세서(910)의 커널(930)로 전송할 수 있다.
병렬 프로세서(910)의 커널(930)의 입출력 응답 수신부(938)는 파일 입/출력에 대한 결과를 메인 프로세서(900)의 커널(901)로부터 수신할 수 있다.
병렬 프로세서(910)의 커널(930)의 입출력 응답 송신부는 상기 수신된 파일 입/출력에 대한 결과를 병렬 프로세서(910)의 경량 커널(920)로 전송할 수 있다.
병렬 프로세서(910)의 경량 커널(920)의 입출력 응답 수신부(926)는 파일 입/출력에 대한 결과를 병렬 프로세서(910)의 커널(930)로부터 수신할 수 있다.
도 10은 본 개시의 일 실시 예에 따른 병렬 프로세서의 경량 커널과 메인 프로세서의 커널 및 병렬 프로세서의 커널간 파일 입/출력 오프로딩 시스템 구조를 나타내는 도면이다.
도 10의 시스템 구조는 병렬 프로세서(1010)의 경량 커널(1020)과 메인 프로세서(1000)의 커널(1001) 및 병렬 프로세서의 커널(1030)간 파일 입/출력 오프로딩이 수행되는 과정을 설명할 수 있다.
병렬 프로세서(1010)의 경량 커널(1020)의 응용 프로그램(1021)에서 파일 입/출력 명령이 실행되면, 상기 명령은 경량 커널(1020)로 전달될 수 있다. 경량 커널(1020)은 채널을 통해 병렬 프로세서(1010)의 커널(1030)의 파일 입/출력 오프로드 프록시(1031)에 전송할 수 있다.
파일 입/출력 오프로드 프록시(1031)는 물리주소를 가상주소로 변환한 후 파일 입/출력 명령을 구성할 수 있다. 또한, 파일 입/출력 오프로드 프록시(1031)는 파일 입/출력 명령을 수행할 수 있다. 상기 수행된 파일 입/출력 명령은 병렬 프로세서(1010)의 커널(1030)에 전달될 수 있다. 또한, 파일 시스템 스텁(file system stub)(1032)은 상기 파일 입/출력 명령을 메인 프로세서(1000)의 커널(1001)의 파일 시스템 서버(file system server)(1005)에 전송할 수 있다.
메인 프로세서(1000)의 커널(1001)의 파일 시스템 서버(1005)는 파일 입/출력 명령의 내용을 수행할 수 있다. 예컨대, 메인 프로세서(1000)의 커널(1001)의 파일 시스템 서버(1005)는 수신된 파일 입/출력 명령에 해당하는 파일에 대한 정보를 파일 시스템(1006)으로부터 추출할 수 있다. 또한, 파일 시스템 서버(1005)는 상기 추출된 정보를 이용하여 DMA 엔진(1040)에 입/출력할 파일 정보와 병렬 프로세서(1010)의 메모리에 대한 물리주소를 전송할 수 있다.
DMA 엔진(1040)은 파일 입/출력 데이터를 병렬 프로세서(1010)의 경량 커널(1020)의 메모리로 DMA를 통해 전송할 수 있다. 예컨대, 메인 프로세서(1000)의 커널(1001)의 파일 시스템 서버(1005) 및 병렬 프로세서(1010)의 커널(1030)의 파일 시스템 스텁(1032)은 각각 9P 서버 및 9P 클라이언트와 같은 네트워크 파일 시스템을 이용할 수 있다. 이때, 9P 서버 및 9P 클라이언트는 경량 커널(1020)과 메인 프로세서(1000)의 커널(1001) 및 병렬 프로세서의 커널(1030)간 파일 입/출력 오프로딩이 수행될 수 있도록 수정될 수 있다. 예컨대, 9P 서버 및 9P 클라이언트는 상기 파일 입/출력 오프로딩 과정에서 파일 입/출력 파라미터를 전달하거나 또는 DMA 전송이 가능하도록 수정될 수 있다.
한편, 본 개시의 병렬 프로세서의 경량 커널과 메인 프로세서의 커널 및 병렬 프로세서의 커널간 파일 입/출력 오프로딩은 공유 메모리 상에서 적어도 하나 이상의 채널을 구성할 수 있다. 예컨대, 상기 채널은 입출력 요청 원형 큐 및/또는 입출력 응답 큐를 포함할 수 있다. 또한, 입출력 오프로드 프록시도 적어도 하나 이상의 개수로 구성될 수 있다. 복수의 채널 및/또는 복수의 입출력 오프로드 프록시를 이용하여 대상 응용 프로그램에 대해 최적화된 동작이 제공될 수 있다.
본 개시의 예시적인 방법들은 설명의 명확성을 위해서 동작의 시리즈로 표현되어 있지만, 이는 단계가 수행되는 순서를 제한하기 위한 것은 아니며, 필요한 경우에는 각각의 단계가 동시에 또는 상이한 순서로 수행될 수도 있다. 본 개시에 따른 방법을 구현하기 위해서, 예시하는 단계에 추가적으로 다른 단계를 포함하거나, 일부의 단계를 제외하고 나머지 단계를 포함하거나, 또는 일부의 단계를 제외하고 추가적인 다른 단계를 포함할 수도 있다.
본 개시의 다양한 실시 예는 모든 가능한 조합을 나열한 것이 아니고 본 개시의 대표적인 양상을 설명하기 위한 것이며, 다양한 실시 예에서 설명하는 사항들은 독립적으로 적용되거나 또는 둘 이상의 조합으로 적용될 수도 있다.
또한, 본 개시의 다양한 실시 예는 하드웨어, 펌웨어(firmware), 소프트웨어, 또는 그들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 범용 프로세서(general processor), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
본 개시의 범위는 다양한 실시 예의 방법에 따른 동작이 장치 또는 컴퓨터 상에서 실행되도록 하는 소프트웨어 또는 머신-실행가능한 명령들(예를 들어, 운영체제, 애플리케이션, 펌웨어(firmware), 프로그램 등), 및 이러한 소프트웨어 또는 명령 등이 저장되어 장치 또는 컴퓨터 상에서 실행 가능한 비-일시적 컴퓨터-판독가능 매체(non-transitory computer-readable medium)를 포함한다.

Claims (20)

  1. 메인 프로세서의 제1 커널과 병렬 프로세서의 경량 커널 사이의 공유 메모리를 설정하는 단계;
    상기 공유 메모리를 이용하여, 상기 메인 프로세서의 제1 커널과 상기 병렬 프로세서의 경량 커널 사이의 데이터 송수신 채널을 설정하는 단계;
    상기 데이터 송수신 채널을 기반으로 상기 경량 커널에서 발생되는 입출력 태스크를 상기 메인 프로세서의 제1 커널에 전달하는 단계;
    상기 메인 프로세서의 제1 커널이 상기 입출력 태스크에 대응되는 동작을 처리하는 단계; 및
    상기 처리 결과를 상기 경량 커널에 전달하는 단계를 포함하고,
    상기 공유 메모리를 설정하는 단계는, 상기 메인 프로세서에 탑재된 제1 커널과 상기 병렬 프로세서에 탑재된 제2 커널 사이의 공유 메모리를 설정하는 단계를 포함하며,
    상기 공유 메모리를 설정하는 단계는,
    상기 병렬 프로세서에 탑재된 제2 커널이 상기 공유 메모리의 물리 주소를 확인하는 단계;
    상기 병렬 프로세서에 탑재된 제2 커널이 상기 경량 커널로 상기 공유 메모리의 물리 주소를 제공하는 단계; 및
    상기 경량 커널이 상기 물리 주소에 대응되는 가상 주소를 설정하는 단계를 포함하는 멀티 커널 시스템의 입출력 처리 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 데이터 송수신 채널을 설정하는 단계는,
    상기 병렬 프로세서의 경량 커널과 상기 메인 프로세서의 제1 커널이 상기 공유 메모리에 입출력 요구 큐를 설정하는 단계; 및
    상기 메인 프로세서의 제1 커널과 상기 병렬 프로세서의 경량 커널이 상기 공유 메모리에 입출력 응답 큐를 설정하는 단계를 포함하는 멀티 커널 시스템의 입출력 처리 방법.
  5. 제4항에 있어서,
    상기 경량 커널에서 발생되는 입출력 태스크를 상기 제1 커널에 전달하는 단계는,
    상기 입출력 태스크와 관련된 파라미터를 상기 입출력 요구 큐에 적재하는 단계를 포함하는 멀티 커널 시스템의 입출력 처리 방법.
  6. 제4항에 있어서,
    상기 처리 결과를 상기 경량 커널에 전달하는 단계는,
    상기 처리 결과에 대응되는 데이터를 상기 입출력 응답 큐에 적재하는 단계를 포함하는 멀티 커널 시스템의 입출력 처리 방법.
  7. 제5항에 있어서,
    상기 입출력 태스크와 관련된 파라미터는,
    파일 식별자, 파일 타입, 파일 경로, 파일 디스크립터 중 적어도 하나를 포함하는 멀티 커널 시스템의 입출력 처리 방법.
  8. 제1항에 있어서,
    상기 메인 프로세서에 탑재된 제1 커널과 상기 병렬 프로세서에 탑재된 제2 커널은 동일한 커널인 멀티 커널 시스템의 입출력 처리 방법.
  9. 제4항에 있어서,
    상기 입출력 요구 큐 및 상기 입출력 응답 큐는 상기 공유 메모리의 물리 주소와 가상 주소를 매핑한 정보를 사용하여 설정되는 멀티 커널 시스템의 입출력 처리 방법.
  10. 제5항에 있어서,
    상기 입출력 태스크와 관련된 파라미터를 상기 입출력 요구 큐에 적재하는 단계는,
    상기 입출력 요구 큐에 대응되는 가상 주소를 확인하는 단계; 및
    상기 입출력 태스크와 관련된 파라미터를 상기 입출력 요구 큐에 대응되는 가상 주소에 적재하는 단계를 포함하는 멀티 커널 시스템의 입출력 처리 방법.
  11. 제6항에 있어서,
    상기 처리 결과에 대응되는 데이터를 상기 입출력 응답 큐에 적재하는 단계는,
    상기 입출력 응답 큐에 대응되는 가상 주소를 확인하는 단계; 및
    상기 처리 결과에 대응되는 데이터를 상기 입출력 응답 큐에 대응되는 가상 주소에 적재하는 단계를 포함하는 멀티 커널 시스템의 입출력 처리 방법.
  12. 제6항에 있어서,
    상기 처리 결과를 상기 경량 커널에 전달하는 단계는,
    상기 경량 커널이 상기 입출력 응답 큐에 적재된 상기 처리 결과에 대응되는 데이터를 확인하는 단계를 더 포함하는 멀티 커널 시스템의 입출력 처리 방법.
  13. 병렬 프로세서의 제1 커널과 상기 병렬 프로세서의 경량 커널 사이의 공유 메모리를 설정하는 단계;
    상기 공유 메모리를 이용하여, 상기 병렬 프로세서의 제1 커널과 상기 병렬 프로세서의 경량 커널 사이의 데이터 송수신 채널을 설정하는 단계;
    상기 데이터 송수신 채널을 기반으로 상기 경량 커널이 상기 경량 커널에서 발생되는 입출력 태스크를 상기 병렬 프로세서의 제1 커널에 전달하는 단계;
    상기 병렬 프로세서의 제1 커널이 상기 입출력 태스크를 메인 프로세서의 제2 커널에 전달하는 단계; 및
    상기 메인 프로세서의 제2 커널이 상기 입출력 태스크에 대응되는 동작을 처리하는 단계를 포함하고,
    상기 처리하는 단계는,
    상기 메인 프로세서의 제2 커널이 DMA(Dynamic Memory Access) 방식을 기반으로 상기 입출력 태스크에 대응되는 데이터를 상기 경량 커널에 전달하는 단계를 포함하는 멀티 커널 시스템의 입출력 처리 방법.
  14. 제13항에 있어서,
    상기 처리하는 단계는,
    상기 메인 프로세서의 제2 커널이 상기 입출력 태스크의 처리 결과를 상기 병렬 프로세서의 제1 커널에 전송하는 단계를 더 포함하고,
    상기 병렬 프로세서의 제1 커널이 상기 입출력 태스크의 처리 결과를 상기 경량 커널에 전송하는 단계를 더 포함하는 멀티 커널 시스템의 입출력 처리 방법.
  15. 제13항에 있어서,
    상기 데이터 송수신 채널을 설정하는 단계는,
    상기 병렬 프로세서의 경량 커널과 상기 병렬 프로세서의 제1 커널이 상기 공유 메모리에 상기 입출력 태스크를 요구하는 큐 및 상기 입출력 태스크의 처리 결과를 응답하는 큐 중 적어도 하나를 설정하는 단계를 포함하는 멀티 커널 시스템의 입출력 처리 방법.
  16. 제13항에 있어서,
    상기 채널은,
    원형 큐(circular queue) 기반의 채널인 멀티 커널 시스템의 입출력 처리 방법.
  17. 병렬 프로세서의 제1 커널;
    상기 병렬 프로세서의 제1 커널과 공유 메모리를 설정하고, 상기 공유 메모리를 이용하여 상기 병렬 프로세서의 제1 커널과 데이터 송수신 채널을 설정하는 상기 병렬 프로세서의 경량 커널; 및
    상기 병렬 프로세서의 제1 커널로부터 입출력 태스크를 수신하고, 상기 수신된 입출력 태스크에 대응되는 동작을 처리하는 메인 프로세서의 제2 커널을 포함하고,
    상기 메인 프로세서의 제2 커널은,
    DMA(Dynamic Memory Access) 방식을 기반으로 상기 입출력 태스크에 대응되는 데이터를 상기 경량 커널에 전달하는 멀티 커널 시스템.
  18. 제17항에 있어서,
    상기 메인 프로세서의 제2 커널은,
    상기 입출력 태스크의 처리 결과를 상기 병렬 프로세서의 제1 커널에 전송하고,
    상기 병렬 프로세서의 제1 커널은,
    상기 입출력 태스크의 처리 결과를 상기 경량 커널에 전송하는 멀티 커널 시스템.
  19. 제17항에 있어서,
    상기 병렬 프로세서의 경량 커널과 상기 병렬 프로세서의 제1 커널은 상기 공유 메모리에 상기 입출력 태스크를 요구하는 큐 및 상기 입출력 태스크의 처리 결과를 응답하는 큐 중 적어도 하나를 설정하는 멀티 커널 시스템.
    처리 방법.
  20. 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체를 포함하는 컴퓨팅 디바이스로서,
    상기 프로그램은,
    멀티 커널 시스템에서 입출력 처리하는 동작을 실행하도록 구성되고,
    상기 멀티 커널 시스템의 입출력 처리하는 동작은,
    메인 프로세서의 제1 커널과 병렬 프로세서의 경량 커널 사이의 공유 메모리를 설정하는 단계;
    상기 공유 메모리를 사용하여, 상기 메인 프로세서의 제1 커널과 상기 병렬 프로세서의 경량 커널 사이의 데이터 송수신 채널을 설정하는 단계;
    상기 데이터 송수신 채널을 기반으로 상기 경량 커널에서 발생되는 입출력 태스크를 상기 메인 프로세서의 제1 커널에 전달하는 단계;
    상기 메인 프로세서의 제1 커널이 상기 입출력 태스크에 대응되는 동작을 처리하는 단계; 및
    상기 처리 결과를 상기 경량 커널에 전달하는 단계를 수행하고,
    상기 공유 메모리를 설정하는 단계는, 상기 메인 프로세서에 탑재된 제1 커널과 상기 병렬 프로세서에 탑재된 제2 커널 사이의 공유 메모리를 설정하는 단계를 포함하며,
    상기 공유 메모리를 설정하는 단계는,
    상기 병렬 프로세서에 탑재된 제2 커널이 상기 공유 메모리의 물리 주소를 확인하는 단계;
    상기 병렬 프로세서에 탑재된 제2 커널이 상기 경량 커널로 상기 공유 메모리의 물리 주소를 제공하는 단계; 및
    상기 경량 커널이 상기 물리 주소에 대응되는 가상 주소를 설정하는 단계를 포함하는 컴퓨터로 판독 가능한 기록 매체를 포함하는 컴퓨팅 디바이스.
KR1020180122065A 2017-10-13 2018-10-12 멀티 커널 시스템의 입출력 처리 방법 및 장치 KR102426416B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/159,342 US11042394B2 (en) 2017-10-13 2018-10-12 Method for processing input and output on multi kernel system and apparatus for the same

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR1020170133467 2017-10-13
KR20170133467 2017-10-13
KR20170143784 2017-10-31
KR1020170143784 2017-10-31

Publications (2)

Publication Number Publication Date
KR20190041954A KR20190041954A (ko) 2019-04-23
KR102426416B1 true KR102426416B1 (ko) 2022-07-29

Family

ID=66285513

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180122065A KR102426416B1 (ko) 2017-10-13 2018-10-12 멀티 커널 시스템의 입출력 처리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102426416B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102535532B1 (ko) * 2022-10-20 2023-05-30 주식회사 망고부스트 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130263157A1 (en) * 2012-03-30 2013-10-03 International Business Machines Corporation Method to utilize cores in different operating system partitions
US20160328348A1 (en) * 2014-01-29 2016-11-10 Hitachi, Ltd. Computer and computer i/o control method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130263157A1 (en) * 2012-03-30 2013-10-03 International Business Machines Corporation Method to utilize cores in different operating system partitions
US20160328348A1 (en) * 2014-01-29 2016-11-10 Hitachi, Ltd. Computer and computer i/o control method

Also Published As

Publication number Publication date
KR20190041954A (ko) 2019-04-23

Similar Documents

Publication Publication Date Title
US11025544B2 (en) Network interface for data transport in heterogeneous computing environments
EP3706394A1 (en) Writes to multiple memory destinations
CN110647480B (zh) 数据处理方法、远程直接访存网卡和设备
US20200104275A1 (en) Shared memory space among devices
US9003082B2 (en) Information processing apparatus, arithmetic device, and information transferring method
US9760386B2 (en) Accelerator functionality management in a coherent computing system
KR101515359B1 (ko) 시스템 코-프로세서에 대한 직접 i/o 액세스
US10698842B1 (en) Domain assist processor-peer for coherent acceleration
US9582463B2 (en) Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message
US9497268B2 (en) Method and device for data transmissions using RDMA
CN112422615A (zh) 一种通信的方法及装置
US10983920B2 (en) Customizable multi queue DMA interface
US9952992B2 (en) Transaction request optimization for redirected USB devices over a network
US11940933B2 (en) Cross address-space bridging
US10873630B2 (en) Server architecture having dedicated compute resources for processing infrastructure-related workloads
US11042394B2 (en) Method for processing input and output on multi kernel system and apparatus for the same
CN116886751A (zh) 一种异构设备的高速通信方法、装置和异构通信系统
KR102426416B1 (ko) 멀티 커널 시스템의 입출력 처리 방법 및 장치
US20160055107A1 (en) Data processing apparatus and method
US20150121376A1 (en) Managing data transfer
US10397140B2 (en) Multi-processor computing systems
US11809349B1 (en) Direct injection of a virtual interrupt
US20220358049A1 (en) Memory access handling for peripheral component interconnect devices
CN115933973B (zh) 远程更新数据的方法、rdma系统及存储介质
US20220124164A1 (en) System and method to offload point to multipoint transmissions

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