KR20180085679A - 병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템 - Google Patents

병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템 Download PDF

Info

Publication number
KR20180085679A
KR20180085679A KR1020180002229A KR20180002229A KR20180085679A KR 20180085679 A KR20180085679 A KR 20180085679A KR 1020180002229 A KR1020180002229 A KR 1020180002229A KR 20180002229 A KR20180002229 A KR 20180002229A KR 20180085679 A KR20180085679 A KR 20180085679A
Authority
KR
South Korea
Prior art keywords
memory area
accelerator
main
data
main memory
Prior art date
Application number
KR1020180002229A
Other languages
English (en)
Other versions
KR102066212B1 (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 US15/874,322 priority Critical patent/US10725667B2/en
Publication of KR20180085679A publication Critical patent/KR20180085679A/ko
Application granted granted Critical
Publication of KR102066212B1 publication Critical patent/KR102066212B1/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
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F01MACHINES OR ENGINES IN GENERAL; ENGINE PLANTS IN GENERAL; STEAM ENGINES
    • F01NGAS-FLOW SILENCERS OR EXHAUST APPARATUS FOR MACHINES OR ENGINES IN GENERAL; GAS-FLOW SILENCERS OR EXHAUST APPARATUS FOR INTERNAL COMBUSTION ENGINES
    • F01N3/00Exhaust or silencing apparatus having means for purifying, rendering innocuous, or otherwise treating exhaust
    • F01N3/02Exhaust or silencing apparatus having means for purifying, rendering innocuous, or otherwise treating exhaust for cooling, or for removing solid constituents of, exhaust
    • F01N3/021Exhaust or silencing apparatus having means for purifying, rendering innocuous, or otherwise treating exhaust for cooling, or for removing solid constituents of, exhaust by means of filters
    • F01N3/023Exhaust or silencing apparatus having means for purifying, rendering innocuous, or otherwise treating exhaust for cooling, or for removing solid constituents of, exhaust by means of filters using means for regenerating the filters, e.g. by burning trapped particles
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F01MACHINES OR ENGINES IN GENERAL; ENGINE PLANTS IN GENERAL; STEAM ENGINES
    • F01NGAS-FLOW SILENCERS OR EXHAUST APPARATUS FOR MACHINES OR ENGINES IN GENERAL; GAS-FLOW SILENCERS OR EXHAUST APPARATUS FOR INTERNAL COMBUSTION ENGINES
    • F01N3/00Exhaust or silencing apparatus having means for purifying, rendering innocuous, or otherwise treating exhaust
    • F01N3/02Exhaust or silencing apparatus having means for purifying, rendering innocuous, or otherwise treating exhaust for cooling, or for removing solid constituents of, exhaust
    • F01N3/021Exhaust or silencing apparatus having means for purifying, rendering innocuous, or otherwise treating exhaust for cooling, or for removing solid constituents of, exhaust by means of filters
    • F01N3/033Exhaust or silencing apparatus having means for purifying, rendering innocuous, or otherwise treating exhaust for cooling, or for removing solid constituents of, exhaust by means of filters in combination with other devices
    • F01N3/035Exhaust or silencing apparatus having means for purifying, rendering innocuous, or otherwise treating exhaust for cooling, or for removing solid constituents of, exhaust by means of filters in combination with other devices with catalytic reactors, e.g. catalysed diesel particulate filters
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F01MACHINES OR ENGINES IN GENERAL; ENGINE PLANTS IN GENERAL; STEAM ENGINES
    • F01NGAS-FLOW SILENCERS OR EXHAUST APPARATUS FOR MACHINES OR ENGINES IN GENERAL; GAS-FLOW SILENCERS OR EXHAUST APPARATUS FOR INTERNAL COMBUSTION ENGINES
    • F01N2410/00By-passing, at least partially, exhaust from inlet to outlet of apparatus, to atmosphere or to other device
    • F01N2410/14By-passing, at least partially, exhaust from inlet to outlet of apparatus, to atmosphere or to other device in case of excessive pressure, e.g. using a safety valve
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F01MACHINES OR ENGINES IN GENERAL; ENGINE PLANTS IN GENERAL; STEAM ENGINES
    • F01NGAS-FLOW SILENCERS OR EXHAUST APPARATUS FOR MACHINES OR ENGINES IN GENERAL; GAS-FLOW SILENCERS OR EXHAUST APPARATUS FOR INTERNAL COMBUSTION ENGINES
    • F01N2610/00Adding substances to exhaust gases
    • F01N2610/14Arrangements for the supply of substances, e.g. conduits
    • F01N2610/1433Pumps
    • F01N2610/144Control thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Chemical & Material Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Combustion & Propulsion (AREA)
  • Mechanical Engineering (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Chemical Kinetics & Catalysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메인 디바이스와 적어도 하나의 가속기를 포함하는 이종 시스템에서 데이터 복사를 수행하는 방법은, 계산 작업에 대한 입력 데이터가 저장되는 제1 가속기 메모리 영역에 대응되는 제1 메인 메모리 영역에 대한 쓰기 권한을 끄는 단계, 상기 적어도 하나의 가속기를 이용하여 상기 계산 작업을 수행하는 단계 및 상기 계산 작업의 출력 데이터가 저장되는 제2 가속기 메모리 영역의 데이터를 상기 제2 가속기 메모리 영역에 대응되는 제2 메인 메모리 영역에 복사하지 않은 상태에서, 상기 제2 메인 메모리 영역에 대한 읽기 권한을 끄는 단계를 포함한다.

Description

병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템 {METHOD FOR TRANSFERRING DATA IN PARALLEL SYSTEM, AND PARALLEL SYSTEM FOR PERFORMING THE SAME}
본 명세서에서 개시되는 실시예들은 병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템에 관한 것으로, 보다 구체적으로는 메인 메모리와 가속기 메모리 사이에서의 데이터 복사를 최소화하여 성능을 높일 수 있는, 병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템에 관한 것이다.
이종 시스템(heterogeneous system)이란 범용 CPU 등의 메인 프로세서와 가속기(accelerator)를 포함하는 시스템으로서, 병렬 시스템의 한 종류이다. 이종 시스템에서는 병렬 프로그램을 실행함으로써 병렬적으로 계산 처리를 수행할 수 있어, 많은 양의 계산을 필요로 하는 고성능 컴퓨팅(High Performance Computing, HPC), 빅 데이터 분석(Big Data Analytics) 및 딥러닝(Deep Learning) 등과 같이 많은 분야에서 이용된다.
이종 시스템에서 병렬 계산 처리를 수행할 때에는 메인 메모리와 가속기 메모리 사이에서의 데이터 복사가 일어나게 되는데, 불필요한 데이터 복사를 없애 데이터 복사 작업을 최소화함으로써 병렬 계산 처리의 효율성을 높일 수 있다.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 명세서에서 개시되는 실시예들은 병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템을 제공하는 데에 그 목적이 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서 일 실시예에 따르면, 메인 디바이스와 적어도 하나의 가속기를 포함하는 이종 시스템에서 데이터 복사를 수행하는 방법은, 계산 작업에 대한 입력 데이터가 저장되는 제1 가속기 메모리 영역에 대응되는 제1 메인 메모리 영역에 대한 쓰기 권한을 끄는 단계, 상기 적어도 하나의 가속기를 이용하여 상기 계산 작업을 수행하는 단계 및 상기 계산 작업의 출력 데이터가 저장되는 제2 가속기 메모리 영역의 데이터를 상기 제2 가속기 메모리 영역에 대응되는 제2 메인 메모리 영역에 복사하지 않은 상태에서, 상기 제2 메인 메모리 영역에 대한 읽기 권한을 끄는 단계를 포함할 수 있다.
다른 실시예에 따르면, 이종 시스템에서 데이터 복사를 수행하는 방법을 수행하기 위한 컴퓨터 프로그램으로서, 이종 시스템에서 데이터 복사를 수행하는 방법은, 계산 작업에 대한 입력 데이터가 저장되는 제1 가속기 메모리 영역에 대응되는 제1 메인 메모리 영역에 대한 쓰기 권한을 끄는 단계, 적어도 하나의 가속기를 이용하여 상기 계산 작업을 수행하는 단계 및 상기 계산 작업의 출력 데이터가 저장되는 제2 가속기 메모리 영역의 데이터를 상기 제2 가속기 메모리 영역에 대응되는 제2 메인 메모리 영역에 복사하지 않은 상태에서, 상기 제2 메인 메모리 영역에 대한 읽기 권한을 끄는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 이종 시스템에서 데이터 복사를 수행하는 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체로서, 이종 시스템에서 데이터 복사를 수행하는 방법은, 계산 작업에 대한 입력 데이터가 저장되는 제1 가속기 메모리 영역에 대응되는 제1 메인 메모리 영역에 대한 쓰기 권한을 끄는 단계, 적어도 하나의 가속기를 이용하여 상기 계산 작업을 수행하는 단계 및 상기 계산 작업의 출력 데이터가 저장되는 제2 가속기 메모리 영역의 데이터를 상기 제2 가속기 메모리 영역에 대응되는 제2 메인 메모리 영역에 복사하지 않은 상태에서, 상기 제2 메인 메모리 영역에 대한 읽기 권한을 끄는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 이종 시스템은, 메인 프로세서 및 메인 메모리를 포함하는 메인 디바이스 및 각각 가속기 프로세서 및 가속기 메모리를 포함하는 적어도 하나의 가속기를 포함하며, 상기 메인 프로세서는, 계산 작업에 대한 입력 데이터가 저장되는 제1 가속기 메모리 영역에 대응되는 제1 메인 메모리 영역에 대한 쓰기 권한을 끄고, 상기 적어도 하나의 가속기가 상기 계산 작업을 수행하도록 제어하고, 상기 계산 작업의 출력 데이터가 저장되는 제2 가속기 메모리 영역의 데이터를 상기 제2 가속기 메모리 영역에 대응되는 제2 메인 메모리 영역에 복사하지 않은 상태에서 상기 제2 메인 메모리 영역에 대한 읽기 권한을 끌 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 병렬 시스템에서 계산 작업을 수행함에 있어서, 계산 작업을 포함하는 프로그램이 데이터의 복사를 요청하였더라도 이를 수행하지 않고 있다가, 실제로 필요한 시점에만 데이터 복사를 수행함으로써 불필요한 데이터 복사가 일어나지 않고, 따라서 프로그램의 실행 시간이 단축될 수 있다.
또한, 전술한 과제 해결 수단 중 어느 하나에 따르면, 프로그래머는 불필요한 데이터 복사로 인해 프로그램의 실행 시간이 늘어나는 것을 방지하기 위해 별도의 복잡한 최적화를 직접 수행할 필요 없이, 의미상으로 올바른 프로그램을 작성하기만 하면 불필요한 데이터 통신을 없애는 최적화는 프로그램 실행 중에 자동으로 일어나므로, 프로그래밍이 간단해진다.
또한, 전술한 과제 해결 수단 중 어느 하나에 따르면, 프로그래머는 이종 시스템을 위한 병렬 프로그래밍 모델을 선택함에 있어, 사용하기 어렵지만 데이터 복사 시점을 구체적으로 지정할 수 있는 병렬 프로그래밍 모델(OpenCL, CUDA 등)을 선택하는 대신, 데이터 복사 시점을 구체적으로 지정하는 데는 한계가 있더라도 사용하기 간단한 병렬 프로그래밍 모델(OpenMP 4.0, OpenACC)을 선택할 수 있어, 프로그래밍이 간단해진다.
본 명세서에 개시된 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 일 실시예에 따른 병렬 시스템을 도시한 도면이다.
도 2는 일 실시예에 따른 병렬 시스템에서의 데이터 복사 방법에서 사용되는 데이터 목록을 도시한 도면이다.
도 3 및 도 4는 일 실시예에 따른 병렬 시스템에서 가속기에서 계산 작업을 수행하기 전후에 데이터를 복사하는 방법을 설명하기 위한 순서도들이다.
도 5 및 도 6은 일 실시예에 따른 병렬 시스템에서의 데이터 복사 방법에서 특정 페이지에 대한 읽기 또는 쓰기가 시도되었으나 페이지 폴트가 발생한 경우, 데이터 복사를 수행하는 과정을 설명하기 위한 도면들이다.
아래에서는 첨부한 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 아래에서 설명되는 실시예들은 여러 가지 상이한 형태로 변형되어 실시될 수도 있으며 여기에서 설명하는 실시예들에 한정되지 않는다. 실시예들의 특징을 보다 명확히 설명하기 위하여, 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서 자세한 설명은 생략하였다. 그리고 도면에서 실시예들의 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하에서 개시되는 실시예들은 병렬 시스템에서의 계산 처리 방법 및 이를 수행하기 위한 병렬 시스템에 관한 것이다. 병렬 시스템이란 서로 통신이 가능한 둘 이상의 계산 디바이스(compute device)를 이용하여 병렬적으로 계산을 처리하는 시스템을 의미한다. 특히, 본 명세서에서는 병렬 시스템의 일 예로서 이종 시스템(heterogeneous system)을 가정하여 설명한다.
이종 시스템이란, 범용 CPU 등의 메인 프로세서와 가속기(accelerator)를 포함하는 시스템을 의미한다. 가속기란 범용의 CPU와는 달리 특정 패턴의 계산에 특화된 프로세서를 의미한다. 가속기의 대표적인 예로는 GPU가 있으며 그 외에도 Intel Xeon Phi 코프로세서, FPGA 등이 널리 사용된다.
도 1은 일 실시예에 따른 이종 시스템을 도시한 도면이다. 도 1을 참조하면, 이종 시스템(100)은 메인 디바이스(10)와 복수의 가속기들(20, 30, 40)을 포함할 수 있다. 메인 디바이스(10)는 메인 프로세서(11) 및 메인 메모리(12)를 포함할 수 있고, 가속기들(20, 30, 40)은 각각 가속기 프로세서(21, 31, 41) 및 가속기 메모리(22, 32, 42)를 포함할 수 있다. 도 1에는 이종 시스템(100)이 복수의 가속기들(20, 30, 40)을 포함하는 것으로 도시하였으나, 이종 시스템(100)은 하나의 메인 디바이스(10)와 하나의 가속기만을 포함할 수도 있다.
이종 시스템(100)에서 병렬 프로그램 수행시 계산 작업의 일부는 가속기(20, 30, 40)에서 실행하고, 나머지 계산 작업 및 입출력 작업은 메인 디바이스(10)에서 실행한다.
메인 프로세서(11)가 계산 작업을 수행할 때는 메인 메모리(12)로부터 데이터를 읽어오거나 메인 메모리(12)에 데이터를 쓰며, 가속기 프로세서(21, 31, 41)가 계산 작업을 수행할 때는 가속기 메모리(22, 32, 42)로부터 데이터를 읽어오거나 가속기 메모리(22, 32, 42)에 데이터를 쓴다.
따라서, 메인 프로세서(11)가 메인 메모리(12)에 쓴 데이터를 가속기 프로세서(21, 31, 41)가 읽기 위해서는, 메인 메모리(12)로부터 가속기 메모리(22, 32, 42)에 데이터를 복사해야 한다. 마찬가지로, 가속기 프로세서(21, 31, 41)가 가속기 메모리(22, 32, 42)에 쓴 데이터를 메인 프로세서(11)가 읽기 위해서는, 가속기 메모리(22, 32, 42)로부터 메인 메모리(12)에 데이터를 복사해야 한다.
따라서, 이종 시스템(100)에서 실행되는 프로그램을 작성할 때는, 전체 계산 작업 중에서 가속기(20, 30, 40)에서 실행할 부분을 지정하고, 계산 작업의 수행에 따라 메인 메모리(12)와 가속기 메모리(22, 32, 42)의 사이에서 데이터 복사 작업을 수행하도록 설정해야 한다.
그런데, 프로그래머의 실수로, 혹은 개발의 용이함을 위하여, 혹은 병렬 프로그래밍 모델의 기능상의 한계로 인하여, 혹은 다른 이유로 데이터 복사 작업이 불필요하게 수행될 수 있다. 일례로 가속기 프로세서(21, 31, 41)가 가속기 메모리(22, 32, 42)에 쓴 데이터를 메인 프로세서(11)가 읽을 필요가 없음에도 불구하고 해당 데이터를 가속기 메모리(22, 32, 42)에서 메인 메모리(12)로 복사하는 상황이 발생할 수 있다.
다른 일례로 가속기 메모리(22, 32, 42)에 이미 저장되어 있는(혹은 저장되어 있었던) 데이터를 다시 메인 메모리(12)에서 가속기 메모리(22, 32, 42)로 복사하거나, 메인 메모리(12)에 이미 저장되어 있는(혹은 저장되어 있었던) 데이터를 다시 가속기 메모리(22, 32, 42)에서 메인 메모리(12)로 복사하는 상황이 발생할 수도 있다.
특히, 과거에는 이종 시스템에서 실행되는 프로그램을 작성하기 위해 OpenCL, CUDA 등 비교적 저수준의 병렬 프로그래밍 모델들이 주로 사용되었으나, 최근 들어서는 프로그래밍을 쉽게 하기 위하여 OpenMP 4.0, OpenACC 등 컴파일러 지시자(compiler directive) 기반의 비교적 고수준의 병렬 프로그래밍 모델들이 사용되기 시작하였다. 후자의 병렬 프로그래밍 모델을 사용하면 기존에 메인 디바이스(10)에서만 실행되던 프로그램을 쉽게 가속기(20, 30, 40)를 함께 사용하도록 수정할 수 있는 반면, 불필요한 데이터 복사가 발생할 개연성이 커졌다.
일 실시예에 따른 이종 시스템(100)에서는, 불필요한 데이터 복사를 없애기 위하여 프로그램이 데이터 복사 작업을 요청하였더라도 이를 수행하지 않고 있다가, 실제로 메인 프로세서(11)가 메인 메모리(12)에 쓴 데이터를 가속기 프로세서(21, 31, 41)가 읽으려고 할 때, 혹은 가속기 프로세서(21, 31, 41)가 가속기 메모리(22, 32, 42)에 쓴 데이터를 메인 프로세서(11)가 읽으려고 할 때, 비로소 메인 메모리(12)와 가속기 메모리(22, 32, 42) 사이의 데이터 복사 작업을 수행한다.
가속기(20, 30, 40)에서 특정 계산 작업을 실행하는 과정에서 어떤 데이터를 읽고 어떤 데이터를 쓰는지는 모두 사전에 알려져 있다고 가정한다. 예를 들면 프로그래머가 직접 명시를 해 줄 수도 있고, 별도의 컴파일러 기술로 분석하여 알아낼 수도 있다. (예를 들어 OpenMP 4.0과 OpenACC의 경우 프로그래머가 직접 명시를 해 준다.) 메인 디바이스(10)에서 계산 작업 혹은 입출력 작업을 실행하는 과정에서 어떤 데이터를 읽고 어떤 데이터를 쓰는지는 운영체제의 페이지 폴트 핸들러(page fault handler)를 사용해 알아낼 수 있다.
일 실시예에 따르면, 프로그램 안의 하나 이상의 계산 작업이 가속기(20, 30, 40)에서 실행되고, 가속기(20, 30, 40)에서 실행되는 각 계산 작업에 대해 입력 데이터가 무엇인지, 즉 각 계산 작업을 실행하기 위해 가속기(20, 30, 40)는 메인 메모리(12)의 어느 영역에 저장된 데이터를 읽어 와야 하는지, 또한 출력 데이터가 무엇인지, 즉 가속기(20, 30, 40)에서 계산 작업을 실행한 결과 가속기 메모리(22, 32, 42)에 쓰여진 데이터가 메인 메모리(12)의 어떤 영역에 저장되어야 하는지가 주어진다고 가정한다.
이하에서는, 계산 작업의 입력 데이터가 저장되는 메인 메모리(12) 내의 특정 영역을 ‘입력 데이터 영역’이라고 하고, 계산 작업의 출력 데이터가 저장되는 메인 메모리(12) 내의 특정 영역을 ‘출력 데이터 영역’이라고 표현하기로 한다. 특정 계산 작업의 입력 데이터 영역과 출력 데이터 영역은 프로그래머에 의해 명시되어 있을 수도 있고, 별도의 기술(예컨대 소스 코드 분석)을 통하여 자동으로 인식할 수도 있고, 두 가지를 함께 사용하여 도출될 수도 있다.
또한, 주어진 입력 데이터 영역에 대해서, 가속기(20, 30, 40)에서 실행되는 계산 작업이 상기 영역에 포함된 모든 원소를 빠짐없이 읽을 수도 있지만, 그 중 일부 원소만 읽을 수도 있다. 마찬가지로, 주어진 출력 데이터 영역에 대해서, 가속기(20, 30, 40)에서 실행되는 계산 작업이 상기 영역에 포함된 모든 원소를 빠짐없이 쓸 수도 있지만, 그 중 일부 원소만 쓸 수도 있다.
가속기 메모리(22, 32, 42)에는 ‘메모리 오브젝트(memory object)’가 할당될 수 있다. 이때, ‘메모리 오브젝트’란 메인 메모리(12)의 특정 영역에 대응되도록 가속기 메모리(22, 32, 42)에 할당되는 같은 크기의 영역을 의미한다. 따라서, 각각의 메모리 오브젝트는 메인 메모리(12)의 특정 영역과 대응된다.
또한, 각각의 메모리 오브젝트는 참 또는 거짓으로 표현되는 ‘모디파이드 값(modified value)’을 가진다. 이때, ‘ 모디파이드 값’이란 “메인 메모리(12)의 특정 영역의 데이터를, 메인 메모리(12)의 특정 영역에 대응되는 메모리 오브젝트에 마지막으로 복사한 후에, 메인 프로세서(11)가 상기 메인 메모리(12)의 특정 영역의 전부 혹은 일부에 값을 쓴 적이 있는가?”에 대한 참/거짓을 나타내는 값이다.
예를 들어, 메인 메모리(12)의 특정 영역의 데이터를 메모리 오브젝트로 복사한 후에, 메인 프로세서(11)가 상기 메인 메모리(12)의 특정 영역의 전부 혹은 일부에 값을 쓴 적이 있다면, 메모리 오브젝트의 모디파이드 값은 참이 된다. 즉, 메모리 오브젝트의 모디파이드 값이 참이라는 것은, 메모리 오브젝트에 저장된 데이터와 메모리 오브젝트에 대응되는 메인 메모리(12)의 특정 영역에 저장된 데이터간에 동일성을 보장할 수 없음을 의미한다.
반대로, 메모리 오브젝트의 모디파이드 값이 거짓이라면, 메인 메모리(12)의 특정 영역의 데이터를 메모리 오브젝트로 복사한 후에, 메인 프로세서(11)가 상기 메인 메모리(12)의 특정 영역의 전부 혹은 일부에 값을 쓴 적이 없는 것이므로, 메모리 오브젝트에 저장된 데이터와 메모리 오브젝트에 대응되는 메인 메모리(12)의 특정 영역에 저장된 데이터는 동일하다.
만약, 모디파이드 값이 참인 메모리 오브젝트가 입력 데이터로 주어졌다면, 메인 메모리(12)의 특정 영역으로부터 메모리 오브젝트로 데이터 복사가 일어나야 한다. 하지만, 모디파이드 값이 거짓인 메모리 오브젝트가 입력 데이터로 주어졌다면, 가속기 프로세서(21, 31, 41)는 메모리 오브젝트에 저장된 데이터를 그대로 사용할 수 있다.
본 발명의 일 실시예에 따르면 현재 가속기 메모리(22, 32, 42)에 할당된 메모리 오브젝트들에 대한 정보를 저장하기 위해, 가속기 메모리(22, 32, 42) 상에서 메모리 오브젝트가 할당된 영역(시작 주소, 길이), 이에 대응하는 메인 메모리 영역(시작 주소, 길이), 메모리 오브젝트의 모디파이드 값을 포함하는 목록을 이용할 수 있다. 도 2에는 이러한 목록의 예시를 도시하였다. 이러한 목록은 메인 메모리(12), 가속기 메모리(22, 32, 42) 또는 다른 스토리지에 저장해 둘 수 있다. 프로그램이 처음 시작될 때는 가속기 메모리(22, 32, 42)에 메모리 오브젝트가 하나도 할당되어 있지 않다. 따라서, 가속기 메모리(22, 32, 42)에 새로운 메모리 오브젝트가 할당되었다면, 이는 가속기 메모리(22, 32, 42)의 특정 영역에 새로운 데이터가 처음으로 복사되었다는 의미이므로 해당 메모리 오브젝트의 모디파이드 값은 거짓이 된다.
이하에서는 가속기(20, 30, 40)에서 계산 작업을 수행하기 전후에 메인 메모리(12)와 가속기 메모리(22, 32, 42) 사이에서 데이터 복사를 수행하는 방법과, 메인 프로세서(11)가 메인 메모리(12)에 액세스를 시도하는 경우 메인 메모리(12)와 가속기 메모리(22, 32, 42) 사이에서 데이터 복사를 수행하는 방법에 대해서 자세히 설명하도록 한다.
우선 도 3 및 도 4를 참조하여 가속기(20, 30, 40)에서 계산 작업을 수행하기 전후에 메인 메모리(12)와 가속기 메모리(22, 32, 42) 사이에서 데이터 복사를 수행하는 방법을 설명한다.
가속기(20, 30, 40)에서 계산 작업을 실행하기 전에, 메인 프로세서(11)는 계산 작업에 대한 입력 데이터 영역과 그에 대응되는 메모리 오브젝트간의 데이터를 일치시킨 후, 입력 데이터 영역에 대한 쓰기 권한을 끈다. 도 3의 순서도는 가속기(20, 30, 40)에서 특정 계산 작업이 실행되기 직전에 수행되는 프로세스들을 포함한다. 설명의 편의를 위해 도 3에 포함된 프로세스들은 가속기 1(20)에서 계산 작업을 수행하기 전에 수행된다고 가정하고 설명한다.
도 3을 참조하면, 301 단계에서 메인 프로세서(11)는 계산 작업에 대한 입력 데이터 영역을 확인한다. 자세하게는, 메인 프로세서(11)가 가속기 1(20)에서 수행 예정인 계산 작업의 입력으로 사용될 데이터가 메인 메모리(12)의 어느 영역에 저장되어 있는지를 확인한다.
302 단계에서는 메인 프로세서(11)가 301 단계에서 확인된 입력 데이터 영역에 대응되는 메모리 오브젝트가, 가속기 메모리(22)에 존재하는지 여부를 판단한다. 메인 프로세서(11)는 도 2에 도시된 목록의 모든 원소를 검사하면서, 301 단계에서 확인된 입력 데이터 영역과 일치하는 메인 메모리 영역이 목록에 존재하는지를 확인함으로써, 입력 데이터 영역에 대응되는 메모리 오브젝트가 가속기 메모리(22)에 존재하는지 여부를 알 수 있다.
판단 결과, 입력 데이터 영역에 대응되는 메모리 오브젝트가 가속기 메모리(22)에 존재한다면, 303 단계로 진행하여 메인 프로세서(11)는 메모리 오브젝트의 모디파이드 값이 ‘참’인지 여부를 판단한다.
모디파이드 값이 ‘참’이라면, 입력 데이터 영역과 메모리 오브젝트간의 데이터의 동일성을 보장할 수 없으므로, 304 단계에서 메인 프로세서(11)는 입력 데이터 영역의 데이터를 메모리 오브젝트에 복사한다. 이어서, 305 단계에서 메인 프로세서(11)는 메모리 오브젝트의 모디파이드 값을 ‘거짓’으로 설정한다.
306 단계에서 메인 프로세서(11)는 입력 데이터 영역에 대한 쓰기 권한(write permission)을 끈다. 이때, 입력 데이터 영역에 대한 쓰기 권한을 끈다는 것은, 예를 들어 입력 데이터 영역에 포함되거나 입력 데이터 영역에 걸쳐 있는 모든 페이지의 쓰기 권한을 끄는 것을 의미할 수 있다.
자세하게는, 306 단계에서 메인 프로세서(11)는 운영체제의 시스템 콜을 사용해 입력 데이터 영역에 포함되거나 걸쳐 있는 모든 페이지의 쓰기 권한을 끈다. 그러면 메인 프로세서(11)가 입력 데이터 영역에 값을 쓰려고 할 때 페이지 폴트(page fault) 인터럽트가 발생하게 된다.
303 단계에서의 판단 결과, 메모리 오브젝트의 모디파이드 값이 ‘거짓’이라면 입력 데이터 영역과 메모리 오브젝트간의 데이터의 동일성이 보장된다는 의미이므로, 바로 306 단계로 진행하여 메인 프로세서(11)는 입력 데이터 영역에 대한 쓰기 권한을 끈다.
한편, 302 단계의 판단 결과, 입력 데이터 영역에 대응되는 메모리 오브젝트가 가속기 메모리(22)에 존재하지 않는다면, 307 단계로 진행하여 메인 프로세서(11)는 가속기 메모리(22)에 새로운 메모리 오브젝트를 생성한다. 이어서, 메인 프로세서(11)는 304 단계에서 입력 데이터 영역에 저장된 데이터를 메모리 오브젝트로 복사하고, 305 단계에서 메모리 오브젝트의 모디파이드 값을 ‘거짓’으로 설정한다. 306 단계에서 메인 프로세서(11)는 입력 데이터 영역에 대한 쓰기 권한을 끈다.
메인 프로세서(11)는 이와 같은 작업을 계산 작업에 대한 모든 입력 데이터 영역들에 대해서 수행한다.
가속기(20, 30, 40)에서 계산 작업을 수행한 후에, 메인 프로세서(11)는 출력 데이터 영역에 대응되는 메모리 오브젝트의 데이터를 출력 데이터 영역에 복사하지 않고, 출력 데이터 영역에 대한 읽기 권한(read permission)을 끈다. 또한, 메인 프로세서(11)는 계산 작업이 수행된 후에도 메모리 오브젝트를 할당 해제하지 않는다. 도 4의 순서도는 가속기(20, 30, 40)에서 특정 계산 작업이 실행된 직후에 수행되는 프로세스들을 포함한다. 설명의 편의를 위해 도 4에 포함된 프로세스들은 가속기 1(20)에서 계산 작업을 수행한 후에 수행된다고 가정하고 설명한다.
도 4를 참조하면, 가속기 1(20)에서 특정 계산 작업이 실행된 직후에, 401 단계에서 메인 프로세서(11)는 계산 작업에 대한 출력 데이터 영역을 확인한다.
402 단계에서 메인 프로세서(11)는 출력 데이터 영역에 대한 읽기 권한을 끈다. 이때, 출력 데이터 영역에 대한 읽기 권한을 끈다는 것은, 예를 들어 출력 데이터 영역에 포함되거나 출력 데이터 영역에 걸쳐 있는 모든 페이지의 읽기 권한을 끄는 것을 의미할 수 있다.
자세하게는, 402 단계에서 메인 프로세서(11)는 운영체제의 시스템 콜을 사용해 출력 데이터 영역에 포함되거나 걸쳐 있는 모든 페이지의 읽기 권한을 모두 끈다. 그러면 메인 프로세서(11)가 출력 데이터 영역에서 값을 읽으려고 할 때 페이지 폴트 인터럽트가 발생하게 된다.
한편, 메인 프로세서(11)는 원래 프로그램의 내용에도 불구하고 가속기 메모리(22)에 있는 메모리 오브젝트의 데이터를 출력 데이터 영역으로 복사하지 않는다. 또한, 메인 프로세서(11)는 원래 프로그램의 내용에도 불구하고 메모리 오브젝트를 할당 해제하지 않는다.
메인 프로세서(11)는 이와 같은 작업을 계산 작업에 대한 모든 출력 데이터 영역들에 대해서 수행한다.
이하에서는 메인 프로세서(11)가 메인 메모리(12)에 읽기 또는 쓰기를 위해 액세스했으나 권한이 없어 거부된 경우, 데이터 복사를 수행하는 방법에 대해서 도 5 및 도 6을 참조하여 자세히 설명한다.
일 실시예에 따르면, 메인 프로세서(11)는 프로그램이 시작된 이후부터 가속기(20, 30, 40)에서 특정 계산 작업이 수행되기 이전의 어느 시점에, 운영체제의 시스템 콜을 사용해 본 발명의 “데이터 접근 감지 함수”를 페이지 폴트 핸들러(page fault handler)로 설정할 수 있다. 메인 메모리(12) 내의 특정 영역에 대한 쓰기 권한 혹은 읽기 권한이 꺼진 상태에서, 메인 프로세서(11)가 해당 영역에 포함되거나 해당 영역에 걸쳐 있는 페이지에 값을 쓰거나 읽으려고 했을 때, 페이지 폴트 인터럽트가 발생하고 데이터 접근 감지 함수가 호출된다.
이하에서는 도 5를 참조하여, 메인 프로세서(11)가 메인 메모리(12) 내의 특정 영역을 포함하는 페이지에 대해서 읽기 또는 쓰기를 시도하였으나 페이지 폴트 인터럽트가 발생한 경우, 데이터 복사를 수행하는 과정에 대해서 설명한다.
도 5는 일 실시예에 따라 메인 프로세서가 특정 페이지에 읽기 또는 쓰기를 시도하였으나 권한이 없어 거부된 경우, 데이터 복사를 수행하는 프로세스를 설명하기 위한 순서도이다. 도 5를 참조하면, 501 단계에서 메인 프로세서(11)는 특정 페이지에 대해서 읽기 또는 쓰기를 시도한다. 502 단계에서 메인 프로세서(11)는 특정 페이지에 대한 읽기 권한 또는 쓰기 권한이 있는지 여부를 판단한다.
판단 결과, 특정 페이지에 대한 읽기 권한 또는 쓰기 권한이 켜져 있는 상태라면, 507 단계로 진행하여 메인 프로세서(11)는 특정 페이지에 대해서 읽기 또는 쓰기 작업을 수행한다. 하지만, 특정 페이지에 대한 읽기 또는 쓰기 권한이 꺼져 있는 상태라면, 503 단계로 진행하여 메인 프로세서(11)는 페이지 폴트 인터럽트를 발생시키고, 데이터 접근 감지 함수를 호출한다. 예를 들어, 메인 프로세서(11)가 특정 페이지에 읽기를 시도하였으나 특정 페이지에 대한 읽기 권한이 꺼져 있다면, 메인 프로세서(11)는 읽기 폴트(read fault)를 발생시키고 데이터 접근 감지 함수를 호출한다. 마찬가지로, 메인 프로세서(11)가 특정 페이지에 쓰기를 시도하였으나 특정 페이지에 대한 쓰기 권한이 꺼져 있다면, 메인 프로세서(11)는 쓰기 폴트(write fault)를 발생시키고 데이터 접근 감지 함수를 호출한다.
504 단계에서 메인 프로세서(11)는 데이터 접근 감지 함수를 통해, 특정 페이지에 대응되는 메모리 오브젝트가 존재하는지 여부를 판단한다. 이때, 특정 페이지에 대응되는 메모리 오브젝트란, 특정 페이지를 포함하거나 특정 페이지가 걸쳐 있는 메인 메모리(12)의 영역에 대응되는 메모리 오브젝트를 의미한다. 메인 프로세서(11)는 특정 페이지를 포함하거나 특정 페이지가 걸쳐 있는 메인 메모리(12)의 영역이 도 2에 도시된 목록에 존재하는지를 확인함으로써, 특정 페이지에 대응되는 메모리 오브젝트가 존재하는지 여부를 판단할 수 있다.
판단 결과, 특정 페이지에 대응되는 메모리 오브젝트가 존재한다면, 505 단계에서 메인 프로세서(11)는 데이터 접근 감지 함수를 통해, 특정 페이지에 대한 읽기 권한 또는 쓰기 권한을 켠다. 이때, 메인 프로세서(11)는 503 단계에서 발생한 페이지 폴트가 읽기 폴트라면 읽기 권한을 켜고, 쓰기 폴트라면 쓰기 권한을 켠다. 이때, 메인 프로세서(11)는 특정 페이지에 대한 쓰기 권한을 켰다면, 특정 페이지에 대응되는 메모리 오브젝트에 대한 모디파이드 값을 ‘참’으로 수정한다.
506 단계에서 메인 프로세서(11)는 데이터 접근 감지 함수를 통해, 메모리 오브젝트의 데이터를 메모리 오브젝트에 대응되는 메인 메모리(12)의 영역에 복사한다.
이번에는 도 6에 도시된 구체적인 예시를 통해 특정 페이지에 대한 읽기 또는 쓰기가 시도되었으나 거부된 경우 데이터를 복사하는 과정에 대해서 설명한다.
도 6을 참조하면, 메인 프로세서(11)가 메인 메모리 영역 B에 포함되거나 메인 메모리 영역 B에 걸쳐 있는 페이지에 대해서 읽기 또는 쓰기를 시도하였으나, 해당 페이지에 대한 읽기 권한 또는 쓰기 권한이 꺼져 있어 페이지 폴트(읽기 폴트 또는 쓰기 폴트)가 발생하고 데이터 접근 감지 함수가 호출된다. 데이터 접근 감지 함수는 페이지에 대응되는 메모리 오브젝트가 존재하는지 여부를 검사한다. 페이지에 걸쳐 있는 메인 메모리 영역 B에 대응되는 메모리 오브젝트 A가 존재하므로, 데이터 접근 감지 함수는 페이지에 대응되는 메모리 오브젝트가 존재하는 것으로 판단한다.
데이터 접근 감지 함수는 메인 메모리 영역 B에 포함되거나 걸쳐 있는 모든 페이지에 대한 읽기 권한 또는 쓰기 권한을 켜고, 메모리 오브젝트 A의 데이터를 메인 메모리 영역 B에 복사한다. 이때, 데이터 접근 감지 함수는 모든 페이지에 대한 쓰기 권한을 켰다면, 메모리 오브젝트 A에 대한 모디파이드 값을 ‘참’으로 수정한다.
한편, 이상에서 설명한 실시예들에서는 같은 페이지 안에 서로 다른 두 메모리 오브젝트 A1 및 A2에 각각 대응되는 메인 메모리 영역 B1 및 B2가 모두 걸쳐 있는 경우가 없다고 가정한다. 일 실시예에 따르면, 이를 보장하기 위해 메인 메모리(12)에 새로운 영역을 할당할 때마다(예를 들어 malloc 함수를 호출하였을 때) 기존에 메인 메모리(12)에 할당된 다른 영역과 같은 페이지를 공유하지 않도록 강제할 수 있다.
또한, 일 실시예에 따르면, 도 3 및 도 4의 단계들을 특정 계산 작업의 모든 입력 데이터 영역 및 출력 데이터 영역에 대해 수행하는 것이 아니라, 특정 계산 작업의 일부 입력 데이터 영역 및 출력 데이터 영역에 대해서만 수행할 수 있다. 예를 들어 일반적인 x86 CPU와 여기에서 실행되는 운영체제의 경우, 힙(heap) 메모리 영역에 대해서는 읽기 권한과 쓰기 권한을 켜고 끌 수 있는 기능을 제공하지만, 스택(stack) 메모리 영역에 대해서는 읽기 권한과 쓰기 권한을 켜고 끌 수 있는 기능을 제공하지 않는다. 이 경우에는 입력 데이터 영역 중 힙 메모리 영역에 속한 것에 대해서만 도 3의 과정을 적용하고, 마찬가지로 출력 데이터 영역 중 힙 메모리 영역에 속한 것에 대해서만 도 4의 과정을 적용할 수 있다.
본 실시예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.
구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로부터 분리될 수 있다.
뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다
또한 본 명세서에서 개시되는 실시예들에 따르는 병렬 시스템에서의 데이터 복사 방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 상품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다.
따라서 본 명세서에서 개시되는 실시예들에 따르는 병렬 시스템에서의 데이터 복사 방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다.
여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다.
또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다.
그리고 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다.
전술한 실시예들에 대한 설명은 예시를 위한 것이며, 실시예들이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 명세서를 통해 청구하는 권리의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 이종 시스템 10: 메인 디바이스
11: 메인 프로세서 12: 메인 메모리
20, 30, 40: 가속기 21, 31, 41: 가속기 프로세서
22, 32, 42: 가속기 메모리

Claims (16)

  1. 메인 디바이스와 적어도 하나의 가속기를 포함하는 이종 시스템에서 데이터 복사를 수행하는 방법에 있어서,
    계산 작업에 대한 입력 데이터가 저장되는 제1 가속기 메모리 영역에 대응되는 제1 메인 메모리 영역에 대한 쓰기 권한을 끄는 단계;
    상기 적어도 하나의 가속기를 이용하여 상기 계산 작업을 수행하는 단계; 및
    상기 계산 작업의 출력 데이터가 저장되는 제2 가속기 메모리 영역의 데이터를 상기 제2 가속기 메모리 영역에 대응되는 제2 메인 메모리 영역에 복사하지 않은 상태에서, 상기 제2 메인 메모리 영역에 대한 읽기 권한을 끄는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 메인 디바이스에 포함된 메인 프로세서가 상기 제1 메인 메모리 영역에 데이터를 쓰려고 시도하면, 상기 제1 메인 메모리 영역에 대한 쓰기 권한을 켜고 상기 제1 가속기 메모리 영역에 대한 모디파이드 값을 참으로 설정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서,
    상기 모디파이드 값을 참으로 설정하는 단계는,
    상기 메인 프로세서가 상기 제1 메인 메모리 영역에 데이터를 쓰려고 시도하면, 페이지 폴트 인터럽트를 발생시키고 데이터 접근 감지 함수를 호출하는 단계;
    상기 제1 메인 메모리 영역에 대응되는 상기 제1 가속기 메모리 영역을 확인하는 단계;
    상기 제1 메인 메모리 영역에 대한 쓰기 권한을 켜는 단계; 및
    상기 제1 가속기 메모리 영역에 대한 모디파이드 값을 참으로 설정하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 메인 디바이스에 포함된 메인 프로세서가 상기 제2 메인 메모리 영역에서 데이터를 읽으려고 시도하면, 상기 제2 메인 메모리 영역에 대한 읽기 권한을 켜고 상기 제2 가속기 메모리 영역의 데이터를 상기 제2 메인 메모리 영역에 복사하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 제2 메인 메모리 영역에 복사하는 단계는,
    상기 메인 프로세서가 상기 제2 메인 메모리 영역에서 데이터를 읽으려고 시도하면, 페이지 폴트 인터럽트를 발생시키고 데이터 접근 감지 함수를 호출하는 단계;
    상기 제2 메인 메모리 영역에 대응되는 상기 제2 가속기 메모리 영역을 확인하는 단계;
    상기 제2 메인 메모리 영역에 대한 읽기 권한을 켜는 단계; 및
    상기 제2 가속기 메모리 영역의 데이터를 상기 제2 메인 메모리 영역에 복사하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 쓰기 권한을 끄는 단계는,
    상기 적어도 하나의 가속기에 포함된 가속기 메모리에, 상기 제1 메인 메모리 영역에 대응되는 상기 제1 가속기 메모리 영역이 존재하는지 여부를 판단하는 단계;
    상기 제1 가속기 메모리 영역이 존재하지 않는다면, 상기 제1 가속기 메모리 영역을 생성하는 단계;
    상기 생성된 제1 가속기 메모리 영역에 상기 제1 메인 메모리 영역의 데이터를 복사하는 단계; 및
    상기 제1 메인 메모리 영역에 대한 쓰기 권한을 끄는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 쓰기 권한을 끄는 단계는,
    상기 적어도 하나의 가속기에 포함된 가속기 메모리에, 상기 제1 메인 메모리 영역에 대응되는 상기 제1 가속기 메모리 영역이 존재하는지 여부를 판단하는 단계;
    상기 제1 가속기 메모리 영역이 존재한다면, 상기 제1 가속기 메모리 영역에 부여된 모디파이드 값(modified value)을 확인하는 단계;
    상기 모디파이드 값이 참이라면, 상기 제1 메인 메모리 영역의 데이터를 상기 제1 가속기 메모리에 복사하는 단계;
    상기 모디파이드 값을 거짓으로 설정하는 단계; 및
    상기 제1 메인 메모리 영역에 대한 쓰기 권한을 끄는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 기재된 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.
  9. 이종 시스템에 의해 수행되며, 제1항에 기재된 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램.
  10. 이종 시스템에 있어서,
    메인 프로세서 및 메인 메모리를 포함하는 메인 디바이스; 및
    각각 가속기 프로세서 및 가속기 메모리를 포함하는 적어도 하나의 가속기를 포함하며,
    상기 메인 프로세서는, 계산 작업에 대한 입력 데이터가 저장되는 제1 가속기 메모리 영역에 대응되는 제1 메인 메모리 영역에 대한 쓰기 권한을 끄고, 상기 적어도 하나의 가속기가 상기 계산 작업을 수행하도록 제어하고, 상기 계산 작업의 출력 데이터가 저장되는 제2 가속기 메모리 영역의 데이터를 상기 제2 가속기 메모리 영역에 대응되는 제2 메인 메모리 영역에 복사하지 않은 상태에서 상기 제2 메인 메모리 영역에 대한 읽기 권한을 끄는, 이종 시스템.
  11. 제10항에 있어서,
    상기 메인 프로세서는,
    상기 메인 프로세서가 상기 제1 메인 메모리 영역에 데이터를 쓰려고 시도하면, 상기 제1 메인 메모리 영역에 대한 쓰기 권한을 켜고 상기 제1 가속기 메모리 영역에 대한 모디파이드 값을 참으로 설정하는 것을 특징으로 하는 이종 시스템.
  12. 제11항에 있어서,
    상기 메인 프로세서는,
    상기 메인 프로세서가 상기 제1 메인 메모리 영역에 데이터를 쓰려고 시도하면 페이지 폴트 인터럽트를 발생시키고 데이터 접근 감지 함수를 호출하고, 상기 제1 메인 메모리 영역에 대응되는 상기 제1 가속기 메모리 영역을 확인하고, 상기 제1 메인 메모리 영역에 대한 쓰기 권한을 켠 후, 상기 제1 가속기 메모리 영역에 대한 모디파이드 값을 참으로 설정하는 것을 특징으로 하는 이종 시스템.
  13. 제10항에 있어서,
    상기 메인 프로세서는,
    상기 메인 프로세서가 상기 제2 메인 메모리 영역에서 데이터를 읽으려고 시도하면, 상기 제2 메인 메모리 영역에 대한 읽기 권한을 켜고 상기 제2 가속기 메모리 영역의 데이터를 상기 제2 메인 메모리 영역에 복사하는 것을 특징으로 하는 이종 시스템.
  14. 제13항에 있어서,
    상기 메인 프로세서는,
    상기 메인 프로세서가 상기 제2 메인 메모리 영역에서 데이터를 읽으려고 시도하면 페이지 폴트 인터럽트를 발생시키고 데이터 접근 감지 함수를 호출하고, 상기 제2 메인 메모리 영역에 대응되는 상기 제2 가속기 메모리 영역을 확인하고, 상기 제2 메인 메모리 영역에 대한 읽기 권한을 켠 후, 상기 제2 가속기 메모리 영역의 데이터를 상기 제2 메인 메모리 영역에 복사하는 것을 특징으로 하는 이종 시스템.
  15. 제10항에 있어서,
    상기 메인 프로세서는,
    상기 적어도 하나의 가속기에 포함된 가속기 메모리에 상기 제1 메인 메모리 영역에 대응되는 상기 제1 가속기 메모리 영역이 존재하는지 여부를 판단하고, 상기 제1 가속기 메모리 영역이 존재하지 않는다면 상기 제1 가속기 메모리 영역을 생성하고, 상기 생성된 제1 가속기 메모리 영역에 상기 제1 메인 메모리 영역의 데이터를 복사한 후, 상기 제1 메인 메모리 영역에 대한 쓰기 권한을 끄는 것을 특징으로 하는 이종 시스템.
  16. 제10항에 있어서,
    상기 메인 프로세서는,
    상기 적어도 하나의 가속기에 포함된 가속기 메모리에 상기 제1 메인 메모리 영역에 대응되는 상기 제1 가속기 메모리 영역이 존재하는지 여부를 판단하고, 상기 제1 가속기 메모리 영역이 존재한다면 상기 제1 가속기 메모리 영역에 부여된 모디파이드 값(modified value)을 확인하고, 상기 모디파이드 값이 참이라면 상기 제1 메인 메모리 영역의 데이터를 상기 제1 가속기 메모리에 복사한 후, 상기 모디파이드 값을 거짓으로 설정하고 상기 제1 메인 메모리 영역에 대한 쓰기 권한을 끄는 것을 특징으로 하는 이종 시스템.
KR1020180002229A 2017-01-19 2018-01-08 병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템 KR102066212B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/874,322 US10725667B2 (en) 2017-01-19 2018-01-18 Method of transferring data in parallel system, and parallel system for performing the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020170009438 2017-01-19
KR20170009438 2017-01-19

Publications (2)

Publication Number Publication Date
KR20180085679A true KR20180085679A (ko) 2018-07-27
KR102066212B1 KR102066212B1 (ko) 2020-01-14

Family

ID=63078377

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180002229A KR102066212B1 (ko) 2017-01-19 2018-01-08 병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템

Country Status (1)

Country Link
KR (1) KR102066212B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005524907A (ja) * 2002-05-08 2005-08-18 インテル コーポレイション ホストプロセッサとグラフィックプロセッサとの間のメモリの最適共有を行うための方法及びシステム
KR20110037492A (ko) * 2009-10-07 2011-04-13 엠텍비젼 주식회사 멀티 포트 메모리 및 그 억세스 제어 방법
JP2012133778A (ja) * 2010-12-20 2012-07-12 Internatl Business Mach Corp <Ibm> ハードウェア・アクセラレータに対する関数の実行時割り当ての装置、方法、およびプログラム
KR20130004351A (ko) * 2010-05-20 2013-01-09 애플 인크. 서브버퍼 오브젝트
KR20130127480A (ko) * 2010-12-15 2013-11-22 어드밴스드 마이크로 디바이시즈, 인코포레이티드 이종 처리 디바이스의 동적 작업 분할

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005524907A (ja) * 2002-05-08 2005-08-18 インテル コーポレイション ホストプロセッサとグラフィックプロセッサとの間のメモリの最適共有を行うための方法及びシステム
KR20110037492A (ko) * 2009-10-07 2011-04-13 엠텍비젼 주식회사 멀티 포트 메모리 및 그 억세스 제어 방법
KR20130004351A (ko) * 2010-05-20 2013-01-09 애플 인크. 서브버퍼 오브젝트
KR20130127480A (ko) * 2010-12-15 2013-11-22 어드밴스드 마이크로 디바이시즈, 인코포레이티드 이종 처리 디바이스의 동적 작업 분할
JP2012133778A (ja) * 2010-12-20 2012-07-12 Internatl Business Mach Corp <Ibm> ハードウェア・アクセラレータに対する関数の実行時割り当ての装置、方法、およびプログラム

Also Published As

Publication number Publication date
KR102066212B1 (ko) 2020-01-14

Similar Documents

Publication Publication Date Title
US9195542B2 (en) Selectively persisting application program data from system memory to non-volatile data storage
US9058197B2 (en) Method for sharing memory of virtual machine and computer system using the same
US10565131B2 (en) Main memory including hardware accelerator and method of operating the same
US10261796B2 (en) Processor and method for executing in-memory copy instructions indicating on-chip or off-chip memory
US10430221B2 (en) Post-copy virtual machine migration with assigned devices
US10067710B2 (en) Detecting buffer overflows in general-purpose GPU applications
US20180276120A1 (en) Manual memory management using lazy patching
JP5778296B2 (ja) 仮想計算機システム、仮想化機構、及びデータ管理方法
CN112231007B (zh) 基于用户态与内核态驱动协同处理框架的设备驱动方法
CN114327777B (zh) 确定全局页目录的方法、装置、电子设备及存储介质
US8726248B2 (en) Method and apparatus for enregistering memory locations
US10013199B2 (en) Translation bypass by host IOMMU for systems with virtual IOMMU
US20200327071A1 (en) Prefetch support with address space randomization
US10725667B2 (en) Method of transferring data in parallel system, and parallel system for performing the same
KR102066212B1 (ko) 병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템
US10496555B2 (en) Implementing per-thread memory access permissions
US8788785B1 (en) Systems and methods for preventing heap-spray attacks
US8539516B1 (en) System and method for enabling interoperability between application programming interfaces
TWI452468B (zh) 虛擬機器記憶體的分享方法與電腦系統
US8321606B2 (en) Systems and methods for managing memory using multi-state buffer representations
KR101948135B1 (ko) 이종 시스템의 애플리케이션 실행 방법 및 이를 수행하기 위한 이종 시스템
US11948008B2 (en) System management memory coherency detection
US20160253120A1 (en) Multicore programming apparatus and method
US20230205532A1 (en) Offloading computation based on extended instruction set architecture
JP2017208058A (ja) 情報処理装置

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