KR101955617B1 - 빅데이터 애플리케이션을 위한 다중-다차원 컴퓨터 구조 - Google Patents

빅데이터 애플리케이션을 위한 다중-다차원 컴퓨터 구조 Download PDF

Info

Publication number
KR101955617B1
KR101955617B1 KR1020177020721A KR20177020721A KR101955617B1 KR 101955617 B1 KR101955617 B1 KR 101955617B1 KR 1020177020721 A KR1020177020721 A KR 1020177020721A KR 20177020721 A KR20177020721 A KR 20177020721A KR 101955617 B1 KR101955617 B1 KR 101955617B1
Authority
KR
South Korea
Prior art keywords
data
access
end interface
preprocessing
processor
Prior art date
Application number
KR1020177020721A
Other languages
English (en)
Other versions
KR20170097778A (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 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20170097778A publication Critical patent/KR20170097778A/ko
Application granted granted Critical
Publication of KR101955617B1 publication Critical patent/KR101955617B1/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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • Y02D10/22

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)

Abstract

본 발명의 일부 실시예에 따라 제공된 데이터 처리장치는, 메인 프로세서에 전기적으로 연결된 프론트-엔드 인터페이스를 포함한다. 이러한 프론트-엔드 인터페이스는, 저장소, 구체적으로 외부 저장장치 및/또는 네트워크에 저장된 데이터를 수신하고, 데이터를 지정하는 액세스 파라미터를 분석하여 데이터가 단일-액세스 데이터인지 또는 다중-액세스 데이터인지 결정한다. 프론트-엔드 인터페이스는, 메인 프로세서에 의한 처리를 위해 다중-액세스 데이터를 라우팅하고, 프론트-엔드 인터페이스에 의한 전처리를 위해 단일-액세스 데이터를 라우팅하고, 전처리의 결과를 상기 메인 프로세서에 라우팅하도록 구성된다.

Description

빅데이터 애플리케이션을 위한 다중-다차원 컴퓨터 구조
본 발명은, 그 일부 실시예에서, 컴퓨터 장치에 관한 것으로, 보다 상세하게는 데이터 처리 애플리케이션을 실행하기 위한 컴퓨터 장치에 관한 것이지만, 이에 한정되는 것은 아니다.
현대 컴퓨터 시스템에서, 데이터 처리 애플리케이션은 표준 컴퓨터 아키텍처를 포함하는 컴퓨터 시스템에서 실행된다. 데이터 처리 애플리케이션이 대용량 데이터 애플리케이션과 같이 대용량 데이터 세트를 지속적으로 분석함에 따라, 컴퓨터 시스템은 애플리케이션 및 대형 데이터 세트의 요구를 충족하도록 향상되었다. 본 명세서에서 빅데이터라는 용어는 전통적인 데이터 처리 방법 및 컴퓨터를 사용하여 처리하기에는 너무 빅데이터 모음을 의미한다. 예를 들어, 1테라바이트 이상의 데이터가 데이터 처리 애플리케이션에 의해 분석되어 마케팅 동향을 결정한다. 빅데이터 애플리케이션을 실행하는 일반적인 컴퓨터 시스템은 64기가바이트의 랜덤 액세스 메모리를 포함할 수 있다.
다음은 빅데이터 애플리케이션에서의 전통적인 컴퓨터 및 데이터 흐름에 대한 설명이다. 이제, 도 1을 참조한다. 도 1a는 현재의 컴퓨터 구성 요소 및 상호 접속의 개략도이다. 메인 중앙 프로세서 및/또는 프로세서 유닛(111)(CPU)은 DMA(direct memory access) 인터페이스, 프론트 사이드 버스(front side bus) 등을 사용하고 컴퓨터 메모리(112)를 사용하여 데이터 처리 애플리케이션을 실행한다. 본 명세서에 사용된 바와 같이, 처리 유닛 및/또는 프로세서라는 용어는 컴퓨터, 컴퓨터 장치, 컴퓨터 장치 등의 프로세서를 의미한다. 본 명세서에서 사용되는 바와 같이, 중앙 프로세서라는 용어는 메인 프로세서, 중앙 프로세서, 멀티 코어 중앙 프로세서 등과 같은 컴퓨터 프로그램의 명령을 실행하는 메인 전자 집적 회로(main electronic integrated circuit)를 의미한다. CPU(111)는 직접 매체 인터페이스를 사용하는 것과 같이 플랫폼 입력 및/또는 출력(IO) 제어기 허브(113)에 접속된다. 예를 들어, CPU는 Intel® Itanium® 프로세서, Intel® Xeon® 프로세서, Advanced Micro Devices Opteron ™ 프로세서, IBM® zEC12 프로세서 등이다. 플랫폼 IO 제어기 허브(113)는 하드 디스크, 네트워크 인터페이스, 키보드, 마우스 등과 같은 컴퓨터 주변 장치에 접속된다.
빅데이터 애플리케이션은 전처리(pre-processing) 및 분석을 위해 하드 디스크 및/또는 네트워크 인터페이스로부터 컴퓨터 메인 메모리 및 메인 메모리로부터 CPU로 저장되는 많은 양의 데이터를 전송한다.
도 1b 및 도 1c를 참조한다. 도 1b 및 도 1c는 각각 데이터 감소 단계를 나타내는 데이터 처리 애플리케이션에서 표준 데이터 흐름 스테이지 및 표준 프로세스 그래프의 개략도이다. 데이터 흐름 아키텍처는 3개의 스테이지: 테라바이트의 데이터와 같은 빅데이터(406)가 저장소로부터 수신되는 IO 스테이지(403), 빅데이터(406)가 메인 메모리에 저장되는 메모리 스테이지(402), 및 전처리 및 분석을 위한 CPU 스테이지(401)를 포함한다. CPU 스테이지(401)는 빅데이터(406)에 필터 및 집계 프로세스(404)를 적용하여 크기가 메가바이트인 데이터 세트와 같은 더 작은 데이터 세트(407)를 추출한다. 더 작은 데이터 세트(407)는 메모리 스테이지(402) 동안 메모리에 저장된 구조화된, 데이터 세트 및/또는 결과(408)를 생성하도록 분석된다(405). 추가 처리를 위해 구조화된 데이터 세트 및 결과(408)는 IO 스테이지 동안 사용자 및/또는 컴퓨터 장치에 송신된다. 결과(408)는 다시 전처리(404A)되고 분석(405A)될 수 있으며, 결과적으로 데이터 세트의 크기가 킬로바이트 데이터로 감소된 더 작은 데이터 세트(408A)가 된다. 표준 컴퓨터 아키텍처의 CPU는 컴퓨터 메인 메모리를 사용하여 전처리 및 처리를 수행한다.
본 발명의 실시예의 목적은 빅데이터 처리 애플리케이션을 효율적으로 실행하는 것이다. 본 목적은 본 발명의 독립항에 의해 해결되며, 종속항은 추가 구현 형태를 보호한다.
본 발명의 일부 실시예에 따르면, 메인 프로세서에 전기적으로 연결된 프론트-엔드 인터페이스를 포함하는 데이터 처리 장치를 제공한다. 상기 프론트-엔드 인터페이스(101)는, 저장소(repository)에 저장된 데이터를 수신하고 - 상기 저장소는 구체적으로 외부 저장장치(122) 및/또는 네트워크(121) 임 -, 상기 데이터를 지정하는 액세스 파라미터(access parameter)를 분석하여 상기 데이터가 단일-액세스 데이터인지 또는 다중-액세스 데이터인지 결정하며, 상기 메인 프로세서(111)에 의한 처리를 위해 상기 다중-액세스 데이터를 라우팅하고, 상기 프론트-엔드 인터페이스(101)에 의한 전처리(pre-processing)를 위해 상기 단일-액세스 데이터를 라우팅하고, 상기 전처리의 결과를 상기 메인 프로세서(111)에 라우팅하도록 구성된다.
선택적으로, 상기 액세스 파라미터는, 상기 프론트-엔드 인터페이스(101)에서 동일한 데이터의 2번의 수신 사이의 수신 시간 사이의 그룹 및 상기 메인 프로세서(111)에 의한 동일한 데이터의 2번의 요청 사이의 요청 시간 사이의 그룹 중 어느 하나에 기초한다.
선택적으로, 상기 액세스 파라미터는, 상기 프론트-엔드 인터페이스(101)에서 동일한 데이터의 2번의 수신 및/또는 동일한 데이터의 2번의 요청 사이의 상대적 시간으로서 측정된다.
선택적으로, 상기 액세스 파라미터는, 상기 프론트-엔드 인터페이스(101)에서 동일한 데이터의 두 번째 액세스의 절대 시간(absolute time)으로서 측정된다.
선택적으로, 상기 액세스 파라미터는, 상기 프론트-엔드 인터페이스(101)에서 동일한 데이터의 2번의 액세스 사이의 상이한 데이터의 수를 카운트(count)하여 측정된다.
선택적으로, 상기 단일-액세스 데이터는, 상기 액세스 파라미터를 임계치와 비교하여 결정된다.
선택적으로, 상기 프론트-엔드 인터페이스(101)는, 로컬 메모리 유닛(104)에 액세스하고, 상기 단일-액세스 데이터를 전처리 및/또는 상기 단일-액세스 데이터를 상기 로컬 메모리 유닛(104)에 저장하며, 추가 처리를 위해, 상기 전처리의 결과를 상기 메인 프로세서(111)에 라우팅(route)하는 것을 수행하도록 구성된 적어도 하나의 로컬 프로세서(106)를 포함한다.
선택적으로, 상기 전처리는 상기 단일-액세스 데이터의 복수의 데이터 엘리먼트(data element)를 필터링하고 집계(aggregate)하기 위한 애플리케이션 특정 명령(application specific instructions)의 그룹을 포함한다.
선택적으로, 상기 프론트-엔드 인터페이스(101)의 적어도 하나의 로컬 프로세서(106)는 전처리 명령 전송 모듈을 포함하고, 상기 전처리 명령 전송 모듈은, 상기 메인 프로세서(111)로부터 상기 애플리케이션 특정 명령의 그룹을 수신하고, 상기 애플리케이션 특정 명령의 그룹을 상기 적어도 하나의 프로세서(106)의 기계어로 변환하며, 상기 전처리를 수행하기 위해 상기 적어도 하나의 프로세서(106)에서 상기 기계어를 실행하도록 구성된다.
선택적으로, 상기 프론트-엔드 인터페이스(101)는, 상기 메인 프로세서(111)에 라우팅 되기 전에 상기 결과의 적어도 일부를 저장하기 위한 임시 메모리 유닛(114)을 포함한다.
선택적으로, 상기 임시 메모리 유닛(114)에서 어드레싱 된 메모리 저장 장치는 상기 메인 프로세서(111)의 메인 메모리(112)의 저장 어드레스로 매핑된다.
선택적으로, 상기 메인 프로세서(111)로부터 메인 프로세서 출력을 수신하고, 상기 메인 프로세서 출력을 사용하여 상기 프론트-엔드 인터페이스(101)는 상기 단일-액세스 데이터를 전처리하도록 구성된다.
선택적으로, 상기 로컬 프로세서 명령은. 상기 전처리를 수행하기 위해, 상기 메인 프로세서(111)를 동작시키도록 구성된 운영 체제에 포함된 장치 드라이버에 의해 생성된다.
본 발명의 일부 실시예에 따르면, 저장소에 저장된 데이터를 수신하는 단계 - 상기 저장소는 구체적으로 외부 저장소(122) 및/또는 네트워크(121) 임-; 상기 데이터를 지정하는 액세스 파라미터를 분석하여 상기 데이터가 단일-액세스 데이터인지 또는 다중-액세스 데이터인지 결정하는 단계; 메인 프로세서(111)에 의한 처리를 위해 상기 다중-액세스 데이터를 라우팅하는 단계; 및 프론트-엔드 인터페이스(101)에 의한 전처리를 위해 상기 단일-액세스 데이터를 라우팅하고 상기 전처리의 결과를 상기 메인 프로세서(111)에 라우팅하는 단계를 포함하는 방법이 제공된다.
본 발명의 일부 실시예에 따르면, 컴퓨터 프로그램 제품이 제공되고, 상기 컴퓨터 프로그램 제품은 컴퓨터 판독 가능한 저장 매체에 인코딩되고, 상기 컴퓨터 프로그램 제품은, 프로세서에 의해 실행 가능하고, 저장소에 저장된 데이터를 수신하기 위한 제1 프로그램 명령 - 상기 저장소는 외부 저장소(122) 및/또는 네트워크(121) 임 -; 상기 프로세서에 의해 실행 가능하고, 상기 데이터를 지정하는 액세스 파라미터를 분석하여 상기 데이터가 단일-액세스 데이터인지 또는 다중-액세스 데이터인지 결정하기 위한 제2 프로그램 명령; 상기 프로세서에 의해 실행 가능하고, 메인 프로세서(111)에 의한 처리를 위해 상기 다중-액세스 데이터를 라우팅하기 위한 제3 프로그램 명령; 및 상기 프로세서에 의해 실행 가능하고, 프론트-엔드 인터페이스(101)에 의한 전처리를 위해 상기 단일-액세스 데이터를 라우팅하고, 상기 전처리의 결과를 상기 메인 프로세서(111)에 라우팅하기 위한 제4 프로그램 명령을 포함한다.
달리 정의되지 않는 한, 본원에서 사용되는 모든 기술 및/또는 과학 용어는 본 발명이 속하는 기술 분야의 당업자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 여기에 기술된 것과 유사한 또는 동등한 방법 및 재료가 본 발명의 실시예를 실시 또는 테스트하는데 사용될 수 있지만, 예시적인 방법 및/또는 재료가 이하에서 기술된다. 충돌이 있는 경우, 정의를 포함한 특허 명세서가 통제할 것이다. 또한, 재료, 방법 및 실시예는 단지 예시적인 것이며 반드시 제한하려는 것은 아이다.
본 발명의 방법 및/또는 시스템의 구현은 선택된 작업을 수동, 자동 또는 이들의 조합으로 수행하거나 완료하는 것을 포함할 수 있다. 또한, 본 발명의 방법 및/또는 시스템의 실시예의 실제 계기 및 장비에 따라, 몇몇 선택된 작업은 하드웨어에 의해, 소프트웨어에 의해 또는 펌웨어에 의해 또는 운영 체제를 사용하여 이들의 조합에 의해 구현될 수 있다.
예를 들어, 본 발명의 실시예에 따라 선택된 작업을 수행하기 위한 하드웨어는 칩 또는 회로로서 구현될 수 있다. 소프트웨어로서, 본 발명의 실시예에 따른 선택된 작업은 임의의 적합한 운영 시스템을 사용하여 컴퓨터에 의해 실행되는 복수의 소프트웨어 명령어로서 구현될 수 있다. 본 발명의 예시적 실시예에서, 여기에 설명된 방법 및/또는 시스템의 예시적인 실시예에 따른 하나 이상의 작업은 복수의 명령을 실행하기 위한 컴퓨팅 플랫폼과 같은 데이터 처리 장치에 의해 수행된다. 선택적으로, 데이터 처리 장치는 명령 및/또는 데이터를 저장하기 위한 휘발성 메모리, 및/또는 명령 및/또는 데이터를 저장하기 위한 자기 하드 디스크 및/또는 제거 가능한 매체와 같은 비휘발성 스토리지를 포함한다. 선택적으로 네트워크 연결도 제공된다. 디스플레이 및/또는 키보드 또는 마우스와 같은 사용자 입력 장치가 선택적으로 또한 제공된다.
본 발명의 일부 실시예가 첨부 도면을 참조하여 단지 예로서 설명된다. 상세한 도면을 참조하면, 도시된 세부 사항은 예시로서 본 발명의 실시예에 대한 설명을 위한 것이다. 이와 관련하여, 도면과 함께 취해진 설명은 본 발명의 실시예가 실시될 수 있는 방법을 당업자에게 명백하게한다.
도면에서:
도 1a는 표준 컴퓨터 구성 요소 및 상호 접속의 개략도이다.
도 1b는 데이터 감소 단계를 나타내는 데이터 처리 애플리케이션에서 표준 데이터 흐름 스테이지의 개략도이다.
도 1c는 데이터 감소 단계를 나타내는 데이터 처리 애플리케이션 실행에서 표준 프로세스 그래프의 개략도이다.
도 2a는 본 발명의 일부 실시예에 따라, 데이터 전처리를 수행하기 위한 프론트-엔드 인터페이스를 도시하는 데이터 처리 장치의 개략도이다.
도 2b는 본 발명의 일부 실시예에 따라, 데이터 전처리를 수행하는, 단일 메모리 제어기를 갖는 프론트-엔드 인터페이스를 도시하는 데이터 처리 장치의 개략도이다.
도 2c는 본 발명의 일부 실시예에 따라, 데이터 전처리를 수행하는, 2개의 메모리 제어기를 갖는 프론트-엔드 인터페이스를 도시하는 데이터 처리 장치의 개략도이다.
도 3은 본 발명의 일부 실시예에 따라, 프론트-엔드 인터페이스에서 데이터 전처리를 수행하는 방법의 흐름도이다.
도 4는 본 발명의 일부 실시예에 따른, 프론트-엔드 인터페이스를 포함하는 데이터 처리 애플리케이션에서 데이터 흐름 스테이지의 개략도이다.
본 발명은, 그 일부 실시예에서, 컴퓨터 장치에 관한 것으로, 보다 상세하게는 데이터 처리 애플리케이션을 실행하기 위한 컴퓨터 장치에 관한 것이지만, 이에 한정되는 것은 아된다.
서버 및 워크 스테이션과 같은 표준 컴퓨터는 테라바이트의 입력 데이터로 데이터 처리 애플리케이션을 실행하는데 사용되며, 전형적으로 단지 수십 기가바이트의 메모리만을 갖는다. 컴퓨터는 가상 메모리, 메모리 페이지 스와핑(memory page swapping) 등을 사용하여 입력 데이터를 일괄적으로 컴퓨터 메모리로 이동시킴으로써 테라바이트 단위의 입력 데이터를 전처리하는 데이터 처리 애플리케이션을 실행한다. 프로세서는 메모리로부터 입력 데이터 배치를 검색하고, 데이터 처리 애플리케이션 명령에 따라 필터링 및 집계와 같은 전처리를 수행한다. 모든 입력 데이터가 전처리되면 프로세서가 분석을 수행한다. 메인 프로세서가 고 전력 프로세서 일 수 있고, 단일-액세스 데이터와 같이 일부 데이터가 빈번하게 또는 단 한 번만 사용되기 때문에, 전처리를 위해 대량의 데이터를 메인 프로세서로 전송하여 상당한 전력 소비 오버 헤드가 발생한다. 따라서 현재 컴퓨터의 데이터 처리 애플리케이션 성능은 처리 속도와 메모리 사이의 데이터 전송 속도에 의해 제한된다. 속도 및 전송 레이트(transfer rate)는 데이터 처리 애플리케이션을 실행하는 컴퓨팅 장치의 에너지 소비에 영향을 미친다. 메인 중앙 프로세서 및/또는 처리 유닛(CPU) 아키텍처 및 실리콘 기술이 발전함에 따라, 전처리 및 분석을 위한 CPU로의 데이터 이동은 빅데이터 애플리케이션의 에너지 소비 및 성능에 영향을 미치는 주요 요소가 되었다. 본 명세서에서 빅데이터 애플리케이션이라는 용어는 100기가바이트 이상의 데이터를 입력으로서 사용하는 것보다 데이터 처리 애플리케이션을 의미할 수 있다.
현재의 해결 수단은 컴퓨터 구성 요소 사이의 데이터 흐름 아키텍처를 변경하지 않으면서 명령 당 CPU 에너지 소모를 최소화하는 데 초점을 맞추고 있다. 예를 들어, DDR4(double data rate fourth generation synchronous dynamic random-access memory)와 같은 새로운 메모리 인터페이스 설계는 데이터 이동 당 에너지 소비를 줄이지만 더 많은 양의 데이터를 CPU로 전송하면 에너지 소비 속도가 점점 더 높아 진다.
메모리 및 CPU 칩과 같은 집적 회로를 통한 데이터 이동의 에너지 소비는 연산 작업에 필요한 에너지와 동일한 비율(rate)로 스케일 업(scale up)되지 않는다. 입력 데이터 크기가 계속 증가하는 데이터 처리 애플리케이션은 빅데이터 애플리케이션에 필요한 입력 데이터의 크기에 비례하여 확장할 수 없는 현재 솔루션을 제공한다. 테라바이트를 기가바이트로 줄이기 위해. 입력 데이터의 초기 전처리를 위한, CPU로 데이터를 전송하는 전력 소비 오버 헤드는 데이터 처리 애플리케이션 성능의 제한 요소가 되고 있다. 예를 들어, 이것은 빅데이터 애플리케이션의 처리 속도의 제한 요인으로서 컴퓨팅 장치 및/또는 CPU의 열 설계 파워(thermal design power)와 같은 처리 중에 병목 현상을 초래한다. 에너지 소비는 또한 데이터 처리 애플리케이션 컴퓨팅 장치의 동작에서 상당한 비용이다.
발명의 일부 실시예에 따르면, 하나 이상의 로컬 프로세서를 포함하는 프론트-엔드 인터페이스는, 데이터 처리 애플리케이션에 대한 입력으로서 사용되는 각 데이터 엘리먼트에 대해, 입력 데이터의 액세스 순서에 따라, 그 데이터 엘리먼트가 단일-액세스 데이터 엘리먼트인지 다중-액세스 데이터 엘리먼트인지 결정한다. 단일-액세스 데이터보다 더 자주 액세스 될 수 있는 다중-액세스 데이터는 메인 컴퓨터 메모리에 저장하기 위해 프론트-엔드 인터페이스에 의해 CPU로 라우팅 되며, 단일-액세스 데이터는 위해 하나 이상의 로컬 프로세서에 의한 전처리를 위해 프론트-엔드 인터페이스에 의해 라우팅 된다. 프론트-엔드 인터페이스에서 입력 데이터의 전처리 부분은, 단일-액세스 데이터를 CPU로 전송하는 데 따른 전력 소비 오버 헤드를 피하고, 대용량 데이터 애플리케이션의 처리 병목 현상을 극복하며 빅데이터 애플리케이션을 실행하는 컴퓨터의 에너지 소비를 줄인다.
프론트-엔드 인터페이스는, 동일한 데이터 엘리먼트에 반복 액세스를 배치하고 두 반복 사이의 다른 데이터 엘리먼트 액세스에 기초한 값을 계산함으로써 입력 데이터의 각 데이터 엘리먼트에 대한 액세스 파라미터 값을 계산한다. 액세스 파라미터는, 동일한 데이터 엘리먼트에 대한 반복 액세스 사이의 총 액세스 횟수를 카운트하고, 동일한 데이터 엘리먼트에 대한 상이한 액세스의 총 횟수, 동일한 데이터 엘리먼트에 대한 액세스 사이의 시간 등을 카운트하여 계산될 수 있다. 데이터 액세스는, 데이터 엘리먼트에 대한 요청의 시퀀스, 전처리를 위해 수신된 데이터 엘리먼트의 시퀀스, 데이터 액세스 요청의 스트림(stream), 데이터의 스트림 등일 수 있다. 하나 이상의 로컬 프로세서는, 한 번만 사용되거나 및/또는 자주 사용되지 않는 단일-액세스 데이터를 전처리하므로, 단일-액세스 데이터를 CPU 및 메인 메모리로 보내는 것과 비교하여 에너지 소비 오버 헤드를 절약한다.
예를 들어, 100메가바이트의 메모리를 갖는 컴퓨터는 테라바이트의 입력 데이터로 데이터 처리 애플리케이션을 실행한다. 본 실시예에서 프론트-엔드 인터페이스는 애플리케이션의 입력 데이터 액세스에서 액세스 순서에서 첫 번째 데이터 엘리먼트가 두 번째로 200 메가바이트 다운 스트림에 액세스한다는 것을 결정한다.
첫 번째 데이터 엘리먼트가 프론트-엔드 인터페이스가 없는 컴퓨터에 의해 전처리 될 때, 첫 번째 데이터 엘리먼트는 첫 번째 액세스를 위해 메모리에 저장되고 가상 메모리 기술을 사용과 같이 100MB의 메인 메모리가 가득 차면 페이징 파일(paging file)로 스와핑된 다음, 두 번째 액세스를 위해 메인 메모리로 다시 스와핑 된다. 첫 번째 데이터 엘리먼트가 단일-액세스 엘리먼트인 것으로 결정하고, 전처리를 위해 첫 번째 데이터 엘리먼트를 프론트-엔드 인터페이스로 라우팅함으로써, 전력 소비가 감소 될 수 있다. 예를 들어, 데이터 엘리먼트를 전송할 때마다 메인 컴퓨터 메모리에 대해 1 피코 줄(pico-joule)이 필요하고, 프론트-엔드 인터페이스에 대해 1/2 피코 줄이 필요하다. CPU에 의해 첫 번째 데이터 엘리먼트를 전처리하는 것은 3번의 전송에 대해 3 피코줄의 에너지를 소비하며, 프론트-엔드 인터페이스는 2번의 전송에 대해 1 피코 줄을 소비한다. 본 실시예에서, 동일한 데이터 엘리먼트에 대한 2번의 액세스 사이의 입력 데이터의 양으로서 액세스 파라미터 값을 계산하고, 각 엘리먼트의 파라미터 값을 이용 가능한 컴퓨터 메인 메모리에 기초한 값과 비교함으로써 단일-액세스 데이터를 결정하여 전력 소비가 감소된다.
본 발명의 일부 실시예에 따르면, 하나 이상의 로컬 프로세서를 포함하는 프론트-엔드 인터페이스를 통합하여, 데이터 처리 장치에 의한, 데이터 처리 애플리케이션의 실행 중에 전력 소비를 감소시키는 방법 및 장치가 제공된다. 본 명세서에서 사용되는 프론트-엔드 인터페이스라는 용어는 소형 프로세서 코어, 메모리, 및 하나 이상의 입출력 인터페이스를 포함할 수 있는 데이터 처리 장치에 통합된 입력 및/또는 출력 스테이지 데이터 전처리 장치를 의미한다. 프론트-엔드 인터페이스는 액세스 순서로부터 계산된 파라미터 값에 따라, 데이터 엘리먼트가 단일-액세스 데이터 엘리먼트인지 또는 다중-액세스 데이터 엘리먼트 인지 액세스하는 각 데이터 엘리먼트에 대해 결정한다. 프론트-엔드 인터페이스는 CPU로 분석하기 전에, 테라바이트 데이터와 같은 대용량의 단일-액세스 데이터를 전처리하므로, CPU로 전송되는 데이터의 양과 CPU 및/또는 컴퓨터의 에너지 소비가 줄어든다.
단일-액세스 데이터는 프론트-엔드 인터페이스의 하나 이상의 로컬 프로세서에 라우팅 되어 전처리된다. 그 결과는 메모리 캐시와 같은 로컬 메모리 유닛에 저장될 수 있다. 프론트-엔드 인터페이스는 메인 메모리에 저장하기 위해 전처리 결과를 CPU로 라우팅하고, 데이터 분석은 메인 CPU에 의해 계속된다. 입력 데이터 및/또는 분석 결과가 프론트-엔드 인터페이스에 의한 추가 전처리를 위해 필요할 때, 이들은 프론트-엔드 인터페이스에 부착되고 CPU에 의해 액세스 가능한 메모리 유닛에 저장될 수 있다.
단일-액세스 데이터는 임의의 유형의 애플리케이션에 존재할 수 있다. 예를 들어, 빅데이터 애플리케이션에서 입력 데이터의 대부분은 단일-액세스 데이터이다.
프론트-엔드 인터페이스는 대량의 데이터를 CPU 및/또는 메인 메모리로 전송하지 않고, 입력 데이터의 필터링 및 집계(aggregation)와 같은 빅데이터 애플리케이션의 전처리 단계를 수행한다. 프론트-엔드 인터페이스에 의해 수행된 이러한 전처리 결과는 입력 데이터보다 현저히 작으며, CPU에 의한 분석을 위해 메인 메모리로 전송된다.
선택적으로, 프론트-엔드 인터페이스는 CPU로부터 입력 데이터에 대한 요청을 수신 및/또는 하드 디스크나 네트워크 인터페이스로부터 대응하는 입력 데이터를 수신하는 하나 이상의 메모리 제어기를 포함할 수 있다. 메모리 제어기는 요청된 시퀀스 및/또는 수신된 시퀀스에 기초하여 각 입력 데이터 엘리먼트의 액세스 파라미터 값을 계산할 수 있으며, 단일-액세스 데이터 및 다중-액세스 데이터와 같은 액세스 타입에 따라 데이터를 라우팅할 수 있다. 메모리 제어기는 메모리 어드레스와 CPU 메인 메모리의 맵핑을 조정할 수 있다.
선택적으로, 액세스 파라미터는 동일한 데이터 엘리먼트의 액세스 사이의 절대 시간이다. 예를 들어, 데이터 엘리먼트가 5초에 한 번만 액세스 된 경우, 데이터 엘리먼트는 단일-액세스 데이터 엘리먼트로 결정된다.
선택적으로, 액세스 파라미터는 동일한 데이터 엘리먼트의 액세스 사이의 상대적인 시간이다. 예를 들어 상대적 시간은 시간순서와 같은 시간순으로 이벤트를 배치하고 시간 순서로 이벤트 발생을 카운트하여 결정된다. 예를 들어, 데이터 엘리먼트가 1 천만 데이터 엘리먼트에서 한 번만 액세스 된 경우 데이터 엘리먼트는 단일-액세스 데이터 엘리먼트로 결정된다.
선택적으로, 액세스 파라미터는 동일한 데이터 엘리먼트의 액세스 사이의 상이한 데이터 엘리먼트의 카운트이다. 예를 들어, 동일한 데이터 엘리먼트의 두 액세스 사이에 재사용 거리(reuse distance)와 같은 3 백만 개의 상이한 데이터 엘리먼트가있는 경우, 데이터 엘리먼트는 단일-액세스 데이터 엘리먼트로 결정된다.
선택적으로, 액세스 파라미터는 동일한 데이터 엘리먼트의 액세스 사이의 상이한 데이터 엘리먼트의 총 크기의 측정(measure)이다. 예를 들어, 2개의 동일한 데이터 엘리먼트의 액세스 사이에 10기가바이트의 상이한 데이터 엘리먼트가 액세스 되는 경우, 데이터 엘리먼트는 단일-액세스 데이터 엘리먼트로 결정된다.
선택적으로, 데이터 엘리먼트가 단일-액세스 데이터 엘리먼트인 것으로 결정하기 위해 액세스 파라미터 값은 고정된 임계치와 비교된다.
선택적으로, 액세스 파라미터 값은 동적 임계치와 비교되고, 동적 임계치는 데이터 처리 장치의 자원 가용성에 기초하여 계산된다. 예를 들어, 동적 임계치는 열 설계 전력을 데이터 처리 장치의 순간 전력 소비(instantaneous power consumption)와 비교하여 계산된다. 예를 들어, 동적 임계치는 데이터 처리 장치의 순간 가용 메모리(instantaneous available memory)에 기초하여 계산된다.
선택적으로, 데이터 처리 장치의 전력 소비를 최소화하기 위해, 액세스 파라미터 값과 비교할 라우팅 임계치는 동적으로 조정된다. 예를 들어, 순간 전력 소비 값을 낮추기 위해, 컴퓨터의 전원 공급 장치로부터 순간 전력 소비 값을 수신하고, 라우팅 임계치를 동적으로 조정한다.
선택적으로, 입력 데이터는 입력 데이터를 처리하는데 필요한 에너지 소비의 비용 함수를 최적화하는 것에 기초하여 프론트-엔드 인터페이스에서 전처리를 위해 선택된다. 예를 들어, 비용 함수는, 프론트-엔드 인터페이스를 사용하여 입력 데이터를 처리하기 위한 데이터를 선택할 때, 재사용 거리 23.7억 개를 사용할 최적의 재사용 거리로 결정한다. 본 실시예에서 23.7억 개의 임계치보다 큰 재사용 거리를 가진 데이터 엘리먼트는 단일-액세스 데이터 엘리먼트로 간주되고 프론트-엔드 인터페이스에 의해 전처리된다.
전처리를 위한 프론트-엔드 인터페이스를 사용의 이점은, 컴퓨팅 장치 및/또는 CPU의 에너지 소비를 상당히 감소시키는 것을 포함한다. 예를 들어 프론트-엔드 인터페이스는 단일-액세스 데이터를 전처리하고 CPU가 이러한 데이터의 모든 전처리를 수행하는 것과 비교하여 에너지 소비의 50% 이상을 줄인다.
본 발명의 적어도 하나의 실시예를 상세하게 설명하기 전에, 본 발명은 이하의 설명 및/또는 도면 및/또는 실시예에서 설명된 구성 요소 및/또는 방법의 구성 및 배열의 세부 사항에 대한 적용에 반드시 제한되는 것은 아님을 이해해야 한다. 본 발명은 다른 실시예가 가능하거나 다양한 방법으로 실시되거나 수행될 수 있다.
본 발명은 시스템, 장치, 장치, 프로세스 및/또는 방법 일 수 있다.
본 발명의 측면들은 본 발명의 실시예에 따른, 방법, 장치 및 시스템의 흐름도 및/또는 블록도를 참조하여 여기에서 설명된다. 흐름도 및/또는 블록도의 각 블록, 및 흐름도 및/또는 블록도의 블록들의 조합은 컴퓨터 판독 가능 프로그램 명령에 의해 구현될 수 있음을 이해할 것이다.
도면에서의 흐름도 및 블록도는 본 발명의 다양한 실시예에 따른 시스템, 방법 및 장치의 가능한 구현의 구조, 기능 및 동작을 도시한다. 이와 관련하여, 흐름도 또는 블록 도의 각 블록은 특정 논리 기능(들)을 구현하기 위한 하나 이상의 동작을 포함하는 모듈, 세그먼트 또는 명령의 일부를 나타낼 수 있다. 일부 다른 구현 예에서, 블록에서 언급된 기능은 도면에서 언급된 순서를 벗어나 발생할 수 있다. 예를 들어, 연속적으로 도시된 2개의 블록은 사실상 실질적으로 동시에 실행될 수 있거나, 관련된 기능에 따라 때때로 블록이 역순으로 실행될 수 있다. 또한, 블록도 및/또는 흐름도의 각 블록, 및 블록도 및/또는 흐름도의 블록의 조합은 특정 기능 또는 동작을 수행하는 특수 목적 하드웨어 기반 시스템에 의해 구현될 수 있다는 것을 유의해야 한다. 특수 목적 하드웨어와 컴퓨터 명령어의 조합을 수행한다.
도 2a, 2B, 도 2c를 참조하면, 도 2a, 2B, 도 2c는 본 발명의 일부 실시예에 따른, 데이터 전처리를 수행하기 위한 프론트-엔드 인터페이스를 도시하는 데이터 처리 장치의 개략도이다. 데이터 처리 장치(100)는 데이터 엘리먼트를 분석하기 위한 메인 중앙 프로세서 및/또는 처리 유닛(CPU)(111), 및 저장소로부터 데이터 엘리먼트의 유입 시퀀스 및/또는 스트림을 수신하는 제어기 허브(controller hub, 113)를 포함한다. 데이터 엘리먼트는, 네트워크 저장소 인터페이스(121)를 통해 액세스 된 원격 저장소의 내부 및/또는 외부 하드 디스크와 같은 로컬 저장소(122)로부터 전송된다.
본 발명의 일부 실시예에 따르면, 데이터 처리 장치(100)는, CPU(111)로부터 데이터 엘리먼트 요청의 시퀀스 및/또는 스트림, 및/또는 제어기 허브(113)를 통해 하나 이상의 저장소로부터의 대응하는 데이터 엘리먼트를 수신하도록 구성된 프론트-엔드 인터페이스(101)를 포함한다. 프론트-엔드 인터페이스(101)는 각각의 데이터 엘리먼트가 다중-액세스 데이터 또는 단일-액세스 데이터에 속할 때, 데이터 액세스에 기초하여 수신된 데이터 엘리먼트 및/또는 데이터 엘리먼트와 같은 것을 결정한다. 다중-액세스 데이터 엘리먼트는 메인 메모리(112)에 저장하기 위해 CPU(111)로 라우팅되고, 단일-액세스 데이터 엘리먼트는 하나 이상의 로컬 프로세서(106)에 의한 전처리를 위해 프론트-엔드 인터페이스에 의해 라우팅된다. 단일-액세스 데이터 엘리먼트는 전처리 전 및/또는 후에 로컬 메모리 유닛(104) 및/또는 프론트-엔드 임시 메모리(114)에 저장될 수 있다. 예를 들어, 프론트-엔드 인터페이스(101)는, 전처리 결과가, 분석을 위해 CPU(111)로 전송될 때 및/또는 프론트-엔드 인터페이스(101)에 의한 장래의 사용을 위해 프론트-엔드 임시 메모리(114)에 저장될 때를 결정한다. CPU(111)는 분석을 수행하고 메인 메모리(112)에 분석 결과를 저장한다. 프론트-엔드 인터페이스(101)는 수신 데이터 엘리먼트의 추가 전처리를 위해 CPU 스테이지로부터 오는 데이터 분석 결과를 수신할 수 있다. 예를 들어, 기계 학습 애플리케이션은 신규 수신 데이터 엘리먼트의 전처리 동안 프론트-엔드 임시 메모리(114)에 저장된 이전 분석 결과를 사용한다.
선택적으로, 프론트-엔드 인터페이스는 데이터 엘리먼트를 라우팅하고, 캐시 메모리와 같은 로컬 메모리 유닛(104)에 액세스하고, 프론트-엔드 임시 메모리(114)에 액세스하기 위해 메모리 제어기(108)를 사용한다.
선택적으로, 프론트-엔드 인터페이스는 데이터 엘리먼트를 라우팅하고, 캐시 메모리와 같은 로컬 메모리 유닛(104)에 액세스하며, 프론트-엔드 임시 메모리(114)에 액세스하기 위해, IO 메모리 제어기(105) 및 CPU 메모리 제어기(103)와 같은 둘 이상의 메모리 제어기를 사용한다. 예를 들어, IO 메모리 제어기(105)는 제어기 허브(113)로부터 수신된 데이터 엘리먼트를 라우팅하고, CPU(111)로 및/또는 CPU(111)로부터 데이터 엘리먼트를 라우팅하도록 구성된다.
IO 메모리 제어기(105), CPU 메모리 제어기(103) 및 단일 메모리 제어기(108)는 프론트-엔드 인터페이스(101)의 입/출력 인터페이스(107)를 통해 데이터 엘리먼트 및/또는 데이터 엘리먼트에 대한 요청을 전송한다. 예를 들어, 입/출력 인터페이스(107)는 직접 메모리 액세스 인터페이스, 직접 미디어 인터페이스, 시스템 버스 인터페이스 등이다. 예를 들어, IO 메모리 제어기(105), CPU 메모리 제어기(103) 또는 단일 메모리 제어기(108)는 단일-액세스 데이터 엘리먼트 또는 다중-액세스 데이터 엘리먼트 인 데이터 엘리먼트를 결정한다.
단일-액세스 데이터 엘리먼트의 프론트-엔드 인터페이스(101)에 의한 전처리는 메인 CPU 메모리(112)로의 데이터 엘리먼트 전송 횟수를 감소시키고, 따라서 데이터 처리 장치(100)의 에너지 소비를 감소시킨다. 예를 들어, 장치(100)의 전체 전력 소비를 감소시키기 위해, 로컬 메모리 유닛(104) 및/또는 프론트-엔드 임시 메모리(114)로 송신된 데이터 엘리먼트는 CPU(111) 및/또는 메인 메모리 제어기를 통과하지 않는다.
프론트-엔드 인터페이스(101)에 연결된 프론트-엔드 임시 메모리(114)는 메인 CPU 메모리(112)와 다르지만, 메인 메모리(112)와 동일한 메모리 어드레스 공간에 맵핑될 수 있다. 프론트-엔드 임시 메모리(114) 저장 어드레스를 CPU 메인 메모리(112) 어드레스 공간에 매팽하여, 분석 결과 데이터 세트는 CPU(111) 및/또는 프론트-엔드 인터페이스(101)에 의한 추가 처리를 위해 사용될 수 있다.
도 3을 참조하면, 도 3은 본 발명의 일부 실시예에 따라 프론트-엔드 인터페이스에서 데이터 전처리를 수행하는 방법의 흐름도이다.
CPU(111)는 데이터 처리 애플리케이션을 실행(201)하고, 데이터 엘리먼트에 대한 액세스 요청의 시퀀스와 같은 분석에 필요한 데이터를 요청한다(202). CPU(111)는 프론트-엔드 인터페이스(101)에 전처리 명령을 전송할 수 있다(211). 데이터 액세스 요청은 네트워크 인터페이스(121)를 사용하여 하드 디스크(122) 또는 네트워크 저장소와 같은 저장소로부터 요청된 데이터를 검색(203)하는 IO 제어기 허브(113)에 의해 수신된다. 각각의 데이터 엘리먼트가 단일-액세스 데이터 엘리먼트 또는 다중-액세스 데이터 엘리먼트 일 때를 결정하기 위해, 프론트-엔드 인터페이스(101)는 데이터 액세스 요청을 수신할 수 있다(221). 프론트-엔드 인터페이스(101)는, 수신된, 각 데이터 엘리먼트 요청 및/또는 데이터 엘리먼트에 대한 액세스 파라미터를 계산하여 단일-액세스 데이터 엘리먼트 또는 다중-액세스 데이터 엘리먼트와 같은 데이터 엘리먼트의 액세스 유형을 결정한다(222). 프론트-엔드 인터페이스(101)는 액세스 파라미터 값을 라우팅 임계치에 비교하여, 요청된 데이터 엘리먼트가 단일-액세스 엘리먼트 인지 또는 다중-액세스 엘리먼트 인지 결정한다(223). 제어기 허브(113)는, 단일-액세스 데이터 엘리먼트 및 다중-액세스 데이터 엘리먼트와 같은 결정된 데이터 액세스 유형에 따라 데이터 엘리먼트를 라우팅하는 프론트-엔드 인터페이스(101)에 요청된 데이터 엘리먼트를 전송한다. 다중-액세스 데이터 엘리먼트는 메인 메모리(112)의 저장 장치를 위해 CPU(111)로 라우팅된다(204). 단일-액세스 데이터 엘리먼트는 프론트-엔드 인터페이스에 의한 전처리(224)를 위해 로컬 메모리 유닛(104) 및/또는 프론트 엔드 임시 메모리(114)에 라우팅된다. 프론트-엔드 인터페이스(101)의 로컬 프로세서(106)는, 전처리 결과를 생성하기 위해, 단일-액세스 데이터 엘리먼트를 필터링하고 집계하는 것과 같은 단일-액세스 데이터 엘리먼트를 전처리한다(224). 전처리 결과는 프론트-엔드 인터페이스(101)에 의해, 프론트-엔드 임시 메모리(114), 로컬 메모리(104), 및/또는 메인 메모리(112)에 저장된다(204). CPU(111)는 데이터를 분석하고(206), 결과를 네트워크 인터페이스(121) 및/또는 로컬 하드 디스크(122) 및/또는 프론트-엔드 임시 메모리(114)를 사용하여 새로운 데이터 엘리먼트의 추가 전처리를 위한 저장소에 송신(207)한다.
액세스 파라미터 값이 동일한 데이터 엘리먼트의 액세스 사이의 절대 시간인 경우, 프론트-엔드 인터페이스(101)는 데이터 엘리먼트 요구 사이의 예상 시간을 계산하고, 수신된 데이터 엘리먼트 사이의 시간을 측정한다. 예를 들어, 전처리를 위해 각 데이터 엘리먼트가 프론트-엔드 인터페이스(101)에 의해 첫 번째 수신될 때, 타이머는 각각의 데이터 엘리먼트에 대해 초기화된다. 예를 들어, 전처리를 위해 데이터 엘리먼트가 프론트-엔드 인터페이스(101)에 의해 5초 후에 두 번째 수신되고, 다중-액세스 임계치가 4초인 경우, 데이터 엘리먼트는 단일-액세스 데이터 엘리먼트인 것으로 결정된다. 본 실시예에서, 데이터 엘리먼트가 두 번째 수신될 때, 데이터 엘리먼트는 전처리 및/또는 분석을 위해 프론트-엔드 인터페이스(101)에 의해 CPU(111)에 전송된다. 예를 들어, 데이터 엘리먼트 요청의 시퀀스는 수신된 데이터 엘리먼트의 수신 시간을 에뮬레이트하기 위해 프론트-엔드 인터페이스(101)에 의해 분석된다. 본 실시예에서, 프론트-엔드 인터페이스(101)는 데이터 엘리먼트의 두 번째 액세스가 2분 후에 있다고 계산하고, 다중-액세스 임계치가 30초인 경우, 프론트-엔드 인터페이스(101)는 데이터 엘리먼트가 단일-액세스 데이터 엘리먼트인 것으로 결정한다. 본 실시예에서, 단일-액세스 데이터 엘리먼트의 두 수신 모두는 프론트-엔드 인터페이스(101)에 의해 라우팅되고 전처리된다.
액세스 파라미터 값이 동일한 데이터 엘리먼트의 액세스 사이의 상대적인 시간 일 때, 데이터 엘리먼트 요청의 시퀀스 및/또는 데이터 엘리먼트 수신은, 이러한 동일한 데이터 엘리먼트에 대한 액세스 간에 데이터 엘리먼트의 총 수량의 계산에 따라, 프론트-엔드 인터페이스(101)에 의해 분석될 수 있다. 예를 들어, 데이터 엘리먼트가 1 천만 액세스에서 1번만 액세스 되고, 단일-액세스의 임계치가 5 백만 액세스인 경우, 데이터 엘리먼트는 프론트-엔드 인터페이스(101)에 의해 단일-액세스 데이터 엘리먼트인 것으로 결정된다. 본 실시예에서, 각 데이터 엘리먼트에 대해, 카운터는 데이터 엘리먼트의 제1 액세스에서 개시되고, 액세스 되는 후속 데이터 엘리먼트마다 카운터 유형에 따라 증가 및/또는 감소된다. 카운터가 카운트다운 카운터에 대해 0과 같은 임계치에 도달하면, 데이터 엘리먼트는 프론트-엔드 인터페이스(101)에 의해 단일-액세스인 것으로 결정된다. 카운터가 임계치에 도달하기 전에, 동일한 데이터 엘리먼트가 두 번째로 액세스 될 때, 데이터 엘리먼트는 다중-액세스 데이터 엘리먼트가 되도록 프론트-엔드 인터페이스(101)에 의해 결정되고, CPU(111)에 라우팅된다. 본 명세서에 사용된 바와 같이, 액세스라는 용어는, 요청 시퀀스에서 데이터 엘리먼트에 대한 요청, 또는 데이터 엘리먼트가 프론트-엔드 인터페이스(101)에 의한 스트림에서와 같이 시퀀스로 수신된다는 것을 의미한다.
액세스 파라미터 값이 동일한 데이터 엘리먼트의 액세스 사이의 재사용 거리인 경우, 데이터 엘리먼트 요청의 시퀀스 및/또는 데이터 엘리먼트 수신은 동일한 데이터 엘리먼트에 대한 액세스 간에 상이한 데이터 엘리먼트의 총 개수의 계산에 따라, 프론트-엔드 인터페이스(101)에 의해 분석될 수 있다. 단일-액세스 데이터 엘리먼트는 CPU 메인 메모리 및/또는 CPU 캐시 메모리와 같은 물리적 메모리 자원의 크기보다 큰 재사용 거리를 갖는 데이터 엘리먼트 일 수 있다. 따라서, 메모리 페이지 스왑(minimizing memory page swap)을 최소화하고 전력 소비를 감소시킬 수 있다. 재사용 거리(reuse distance)는 기술 보고서 "UR-CS-TR-741, Computer Science Department, University of Rochester, Rochester, New York, February 2001."에 의해 개시된 것처럼 동일한 입력 데이터 엘리먼트에 대해 두 번의 연속 된 액세스 사이에서 액세스되는 고유 입력 데이터 엘리먼트의 수로 정의된다.
예를 들어, 데이터 엘리먼트가 4 백만 개의 상이한 데이터 엘리먼트 액세스에서 한 번만 액세스 되고 단일-액세스에 대한 임계치가 고유 데이터 엘리먼트에 대한 2 백만 액세스인 경우, 데이터 엘리먼트는 프론트-엔드 인터페이스(101)에 의해 단일-액세스 데이터 엘리먼트인 것으로 결정된다. 본 실시예에서, 각 데이터 엘리먼트에 대해, 카운터는 데이터 엘리먼트의 첫 번째 액세스시에 개시되고, 액세스 되는 후속 고유 데이터 엘리먼트마다 카운터 유형에 따라 증가 및/또는 감소된다. 예를 들어, 데이터 엘리먼트에 액세스하기 위한 일련의 요청이 분석되어 각 고유 데이터 엘리먼트에 대한 재사용 거리를 계산하고, 특정 데이터 엘리먼트의 재사용 거리가 라우팅 임계치 이상인 경우, 데이터 엘리먼트는 단일-액세스 데이터 엘리먼트인 것으로 결정된다.
선택적으로, 프론트-엔드 인터페이스(101)의 로컬 메모리 유닛(104)은 판독 및/또는 기록 액세스를 위해 로컬 프로세서(106)에 의해 액세스 되는 캐시 메모리이다. 예를 들어, 로컬 메모리 유닛은 SRAM(fast static random-access memory)이다. 로컬 메모리 유닛(104)은, 데이터를 프론트-엔드 임시 메모리(114)에 저장 및/또는 메인 메모리 제어기(108)로 데이터를 전송하기 위해, DMA 인터페이스를 사용하여, CPU 메모리 제어기(103), IO 메모리 제어기(105) 및/CPU 메모리(112)에 의해 액세스 된다.
프론트-엔드 인터페이스(101) 및 로컬 프로세서(106)는 분석을 위해 CPU로 전송되기 전에 데이터 엘리먼트의 필터링 및 집성을 실행하는 하나 이상의 애플리케이션 특정 처리 코어이다. 예를 들어, 로컬 프로세서(106)는 ARM(Acorn RISC Machine) 프로세서와 같은 RISC(reduced instruction set computing) 프로세서이고 프론트-엔드 인터페이스(101)의 집적 회로에 통합된다. 예를 들어, 로컬 프로세서는 복잡하다 Intel® Atom™ 프로세서와 같은 CISC(complex instruction set computing) 프로세서이다.
프론트-엔드 로컬 프로세서로서 본 발명의 실시예를 구현하도록 선택된 처리 코어(processing core)는, 선택적으로 소프트웨어 모듈을 사용하여, 메인 CPU(111)로부터 프론트-엔드 인터페이스(101) 로컬 프로세서(106)로의 전처리 명령의 변환에 영향을 미친다. 선택적으로, 처리 코어의 선택은 처리 코어의, 특정 유형 또는 브랜드에 국한되지 않는다. 마찬가지로, 메인 장치(100) CPU(111)의, 제조사 및 모델은 프로세서의, 특정 제조사 및 모델에 한정되지 않는다.
선택적으로, 본 발명의 일부 실시예에서, 프론트-엔드 인터페이스(101)의 동작 및/또는 전처리를 가능하게 하는 프로세서 명령을 수신하는 소프트웨어 모듈을 더 포함한다. 예를 들어, 컴퓨터 프로그래밍 언어 코드를 포함하는 텍스트 파일은 컴파일러에 의해 컴파일되고, 이러한 컴파일러는, 프론트-엔드 인터페이스(101)에서 수행되는 전처리를 가능하게 하는 기능을 포함하는 소프트웨어 모듈 라이브러리를 포함한다. 이러한 기능은, 메인 CPU(111)의 기계어로부터 로컬 프로세서(106)의 기계어로 전처리 프로세서 명령을 전송하는 포팅 기능(porting function)일 수 있다. 예를 들어 전처리 명령의 포팅은 CISC 명령 세트로부터 RISC 명령 세트로 수행된다. 예를 들어, 데이터 처리 애플리케이션의 생성 동안, 전처리 명령은 로컬 프로세서(106)에 의해 사용되는 RISC 프로세서 명령 세트로 컴파일러에 의해 직접 컴파일된다. 선택적으로, 컴퓨터의 운영 체제에 설치된 장치 드라이버는 전처리 명령 및 프론트-엔드 인터페이스(101)를 제어한다. 예를 들어, 액세스 파라미터 유형과 같은 동작 명령은 프론트-엔드 인터페이스(101) 동작을 변경하는 장치 드라이버를 통해 수정된다. 예를 들어, 장치 드라이버는, 동적 라우팅 임계치 조정을 선택하여 순간 전력 소비를 낮추기 위한 사용자 인터페이스를 가지고 있다. 예를 들어, 장치 드라이버는 절대 시간, 상대적 시간, 재사용 거리(reuse distance), 메모리 크기 등과 같은 액세스 파라미터 유형을 선택하기 위한 사용자 인터페이스를 갖는다.
데이터 처리 애플리케이션의 단일-액세스 데이터를 전처리하는 프론트-엔드 인터페이스(101)의 실시예는 다양한 기술적 수단으로 데이터 처리 장치(100)에 전자적으로 및 디지털적으로 통합될 수 있다. 예를 들어, 프론트-엔드 인터페이스(101)는 기존 CPU(111) 및 칩셋에 추가하여 컴퓨터 마더보드에 집적되는 칩셋과 같은 집적 회로의 IO 스테이지 그룹으로서 구현된다. 예를 들어, 프론트-엔드 인터페이스(101)는 인텔® 모델 DH82Z97 PCH 집적 회로를 기반으로 하는 칩셋에 통합된다. 예를 들어, 프론트-엔드 인터페이스는 기존 컴퓨터 마더보드에 애드-온 카드로써 연결된 인쇄 회로 기판에 통합되며, 장치 드라이버는 시스템 버스를 사용하여 데이터를 전송하는 데 사용된다. 예를 들어 프론트-엔드 인터페이스는 개별 구성 요소 및 특수 집적 회로로서 마더보드에 통합된다. 예를 들어 프론트-엔드 인터페이스는 컴퓨터 마더보드에 추가된 단일 집적 회로에 통합된다. 예를 들어 프론트-엔드 인터페이스는 시스템 온 칩(system-on-chip) 제품으로 구현된다.
선택적으로, 프론트-엔드 인터페이스(101)는 산업 표준 컴퓨터 인터페이스 및 제조 기술을 사용하여 전자적 및 디지털적으로 집적 회로 및/또는 인쇄 회로 기판에 통합된다. 예를 들어, 프론트-엔드 인터페이스(101)는 PCIe x16(16-lane Peripheral Component Interconnect Express) 확장 버스 인터페이스를 갖는 애드-온 회로 보드이다.
IO 스테이지에서 데이터를 전처리하는 것은 데이터 분석을 위한 메모리 할당 자원을 감소시킬 수 있고 CPU 캐시 메모리 오염을 감소시켜, 데이터 처리 장치의 전반적인 성능을 향상시킬 수 있다. 또한, 본 발명의 실시예는 데이터의 크기에 따라 확장되고, 에너지 절약은 입력 데이터 크기가 증가함에 따라 증가한다.
다음은 데이터 처리 애플리케이션에 대한 데이터 감소 이점의 예를 제공하는 개략도이다. 도 4를 참조하면, 도 4는 본 발명의 일부 실시예에 따른 프론트-엔드 인터페이스(101)를 포함하는 데이터 처리 애플리케이션의 데이터 흐름 스테이지의 개략도이다.
데이터 처리의 IO 스테이지(403)는, 데이터 입력 스테이지(403)의 일부로서 전처리를 수행하고, 는 프론트-엔드 엔진(404)과 같은 프론트-엔드 인터페이스(101)를 통합하고, 다량의 입력 데이터(406)를 더 적은 양의 입력 데이터(407)로 줄인다. 따라서, 메모리 스테이지는 다량의 입력 데이터를 전달하고 저장하는데 사용되는 상당한 양의 에너지를 절약한다. CPU 스테이지(401)는 또한, 분석(407)을 위해 적은 양의 입력 데이터를 프로세서(405)로 전송하는데 상당한 양의 에너지를 절약한다. 데이터 분석 결과 및/또는 출력된 오더 결과 데이터 세트(408)는, 메모리 스테이지(402) 내의 메모리에 저장, 및/또는 IO 스테이지(403) 내의, 저장소 및/또는 제2 컴퓨터 장치로 전송될 수 있다. 도면에서, 흐름도 및 블록도는 본 발명의 다양한 실시예에 따른, 시스템, 방법 및 장치의, 가능한 구현의, 구조, 기능 및 동작을 도시한다. 이와 관련하여, 흐름도 또는 블록도 내의 각 블록은, 특정 논리 기능(들)을 구현하기 위한 하나 이상의 실행 가능 명령을 포함하는 모듈, 세그먼트 또는 코드 부분을 나타낼 수 있다. 또한, 일부 대체 구현 예에서, 블록에서 언급된 기능들이 도면들에서 언급된 순서를 벗어나 발생할 수 있음을 또한 주목해야 한다. 예를 들어, 연속적으로 도시된 2개의 블록은 사실상 실질적으로 동시에 실행될 수 있거나, 관련된 기능에 따라 때때로 블록이 역순으로 실행될 수 있다. 또한, 블록도 및/또는 흐름도의 각 블록, 및 블록도 및/또는 흐름도의 블록의 조합은 특정 기능 또는 동작을 수행하는 특수 목적 하드웨어 기반 시스템에 의해 구현될 수 있으며, 또는 특수 목적 하드웨어 및 컴퓨터 명령의 조합을 포함할 수 있다.
본 발명의 다양한 실시예에 대한 설명은 설명의 목적으로 제공되었지만, 개시된 실시예에 한정적이거나 제한하려는 것은 아니다. 기술된 실시예의 범위 및 사상을 벗어나지 않으면서 당업자에게 많은 변형 및 변화가 명백할 것이다. 여기에 사용된 용어는 실시예의 원리, 시장에서 발견된 기술에 대한 실용적인 적용 또는 기술적 개선을 가장 잘 설명하거나 당업자가 여기에 개시된 실시예를 이해할 수 있도록 선택되었다.
본 발명으로부터 성숙 된 특허의 수명 동안 많은 관련 처리 코어가 개발될 것이며, 로컬 처리이라는 용어의 범위는 이러한 모든 신기술을 선험적으로 포함하는 것으로 의도된다.
본 출원으로부터 만기가 된 특허의 수명 동안, 관련된 많은 중앙 프로세서 및/또는 프로세서가 개발될 것이며 중앙 프로세서 및/또는 프로세서라는 용어의 범위는 이러한 모든 신기술을 선험적으로 포함하는 것으로 의도된다.
본 출원으로부터 만기가 되는 특허의 수명 동안 많은 관련 데이터 처리 애플리케이션이 개발될 것이며, 데이터 처리 애플리케이션이라는 용어의 범위는 그러한 모든 신기술을 선험적으로 포함하는 것으로 의도된다.
본원에 사용된 용어 "약"은 ± 10%를 의미한다.
용어 "포함하는", "포함하고, "포함하며, "가지는", "갖는" 및 이들의 활용은 "포함하지만 이에 제한되지 않는다."라는 의미한다. 이 용어는 "구성된" 및 "본질적으로 구성되는"이라는 용어를 포함한다.
"본질적으로 이루어진(consisting essentially of)"이라는 문구는 추가 성분 및/또는 추가 단계가 청구된 조성물 또는 방법의 기본 및 신규 한 특성을 실질적으로 변경시키지 않는 경우에만, 추가의 성분 및/또는 단계를 포함할 수 있음을 의미한다.
본원에서 사용된 단수 형태 "a", "an" 및 "the"는 문맥이 달리 명시하지 않는 한 복수의 언급을 포함한다. 예를 들어, "화합물" 또는 "적어도 하나의 화합물"이라는 용어는 복수의 화합물(이들의 혼합물을 포함)을 포함할 수 있다.
"예시적인"이라는 단어는 본 명세서에서 "예, 예시 또는 예증으로서의 역할"을 의미하는 것으로 사용된다. "예시적인" 것으로 기술된 임의의 실시예는 반드시 다른 실시예보다 바람직하거나 유리한 것으로 해석 및/또는 다른 실시예로부터의 특징의 조합을 배제하는 것으로 해석되지 않아야 한다.
"임의로"라는 단어는 "일부 실시예에서는 제공되며 다른 실시예에서는 제공되지 않는다."라는 의미로 사용된다. 본 발명의 임의의 특정 실시예는 그러한 특징이 상충되지 않는 한 복수의 "선택적" 특징을 포함할 수 있다.
본 명세서 전체에 걸쳐, 본 발명의 다양한 실시예가 범위 포맷(range format)으로 제공될 수 있다. 범위 포맷에서의 설명은 편의상 및 간략화를 위한 것이며 본 발명의 범위에 대한 융통성 없는 제한으로 해석되어서는 안 됨을 이해해야 한다. 따라서, 범위의 설명은 가능한 모든 부분 범위 및 그 범위 내의 개별적인 수치를 구체적으로 개시한 것으로 간주하여야 한다. 예를 들어, 1 내지 6과 같은 범위의 설명은 1 내지 3, 1 내지 4, 1 내지 5, 2 내지 4, 2 내지 4, 3 내지 6과 같은 하위 범위를 구체적으로 개시한 것뿐 아니라 해당 범위 내의 개별 번호(예 : 1, 2, 3, 4, 5 및 6)를 나타낸 것으로 간주하여야 한다. 이는 범위의 폭에 관계없이 적용된다.
본 명세서에서 수치 범위가 지시되면, 이는 지시된 범위 내에서 인용된 숫자(분수 또는 정수)를 포함한다는 의미이다. 제1 지시 숫자와 제2 지시 숫자의 "범위/ 사이의 범위"와, 제1 지시 숫자 "범위/로부터" 제2 지시 숫자"까지"의 범위는 본 명세서에서 상호 교환적으로 사용되며 제1 지시 숫자 및 제2 지시 숫자 그 사이의 모든 분수 및 정수 수치를 포함한다.
명료성을 위해, 별개의 실시예의 문맥에서 설명된 본 발명의 소정의 특징들이 단일 실시예에서 조합하여 제공될 수 있음을 알 수 있다. 역으로, 간략화를 위해, 단일 실시예와 관련하여 기술된 본 발명의 다양한 특징은 또한 개별적으로 또는 임의의 적절한 서브 컴비네이션으로 또는 본 발명의 임의의 다른 설명된 실시예에서 적절하게 제공될 수 있다. 다양한 실시예의 문맥에서 설명된 어떤 특징들은 그 실시예가 이들 요소 없이는 작동하지 않는 한, 그러한 실시예의 본질적인 특징으로 간주되어서는 안된다.
본 발명이 특정 실시 측면과 관련하여 기술되었지만, 많은 대안, 변형 및 변형이 당업자에게 명백하다. 따라서, 첨부된 청구 범위의 사상 및 넓은 범위 내에 있는 그러한 모든 대안, 변형 및 변경을 포함 한다.
본 명세서에서 언급된 모든 간행물, 특허, 및 특허 출원은 각각의 개별 간행물, 특허, 또는 특허 출원이 본원에 구체적으로 및 개별적으로 표시되는 것과 동일한 정도로 본 명세서에 참조로서 전체적으로 통합된다. 또한, 본원에서 임의의 참조 문헌의 인용 또는 식별은 그러한 참조가 본 발명의 선행 기술로써 이용 가능하다는 인정으로 해석되어서는 안 된다. 섹션 헤딩(section heading)이 사용되는 한, 반드시 제한적인 것으로 해석되어서는 안된다.

Claims (15)

  1. 데이터 처리 장치로서,
    메인 프로세서에 전기적으로 연결된 프론트-엔드 인터페이스(front-end interface)를 포함하고,
    상기 프론트-엔드 인터페이스는, 저장소(repository)에 저장된 데이터를 수신하고 - 상기 저장소는 구체적으로 외부 저장장치 및/또는 네트워크 임 -, 상기 데이터를 지정하는 액세스 파라미터(access parameter)를 분석하여 상기 데이터가 단일-액세스 데이터인지 또는 다중-액세스 데이터인지 결정하며, 상기 메인 프로세서에 의한 처리를 위해 상기 다중-액세스 데이터를 라우팅하고, 상기 프론트-엔드 인터페이스에 의한 전처리(pre-processing)를 위해 상기 단일-액세스 데이터를 라우팅하고, 상기 전처리의 결과를 상기 메인 프로세서에 라우팅하도록 구성된, 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 액세스 파라미터는, 상기 프론트-엔드 인터페이스에서 동일한 데이터의 2번의 수신 사이의 수신 시간 사이의 그룹 및 상기 메인 프로세서에 의한 동일한 데이터의 2번의 요청 사이의 요청 시간 사이의 그룹 중 어느 하나에 기초하는, 데이터 처리 장치.
  3. 제2항에 있어서,
    상기 액세스 파라미터는, 상기 프론트-엔드 인터페이스에서 동일한 데이터의 2번의 수신 및/또는 동일한 데이터의 2번의 요청 사이의 상대적 시간으로서 측정되는, 데이터 처리 장치.
  4. 제2항에 있어서,
    상기 액세스 파라미터는, 상기 프론트-엔드 인터페이스에서 동일한 데이터의 두 번째 액세스의 절대 시간(absolute time)으로서 측정되는, 데이터 처리 장치.
  5. 제2항에 있어서,
    상기 액세스 파라미터는, 상기 프론트-엔드 인터페이스에서 동일한 데이터의 2번의 액세스 사이의 상이한 데이터의 수를 카운트(count)하여 측정되는 데이터 처리 장치.
  6. 제2항에 있어서,
    상기 단일-액세스 데이터는, 상기 액세스 파라미터를 임계치와 비교하여 결정되는 데이터 처리 장치.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 프론트-엔드 인터페이스는,
    로컬 메모리 유닛에 액세스하고, 상기 단일-액세스 데이터를 전처리 및/또는 상기 단일-액세스 데이터를 상기 로컬 메모리 유닛에 저장하며, 추가 처리를 위해, 상기 전처리의 결과를 상기 메인 프로세서에 라우팅(route)하는 것을 수행하도록 구성된 적어도 하나의 로컬 프로세서
    를 포함하는, 데이터 처리 장치.
  8. 제7항에 있어서,
    상기 전처리는 상기 단일-액세스 데이터의 복수의 데이터 엘리먼트(data element)를 필터링하고 집계(aggregate)하기 위한 애플리케이션 특정 명령(application specific instructions)의 그룹을 포함하는, 데이터 처리 장치.
  9. 제8항에 있어서,
    상기 프론트-엔드 인터페이스의 적어도 하나의 로컬 프로세서는 전처리 명령 전송 모듈을 포함하고,
    상기 전처리 명령 전송 모듈은, 상기 메인 프로세서로부터 상기 애플리케이션 특정 명령의 그룹을 수신하고, 상기 애플리케이션 특정 명령의 그룹을 상기 적어도 하나의 프로세서의 기계어로 변환하며, 상기 전처리를 수행하기 위해 상기 적어도 하나의 프로세서에서 상기 기계어를 실행하도록 구성된, 데이터 처리 장치.
  10. 제1항에 있어서,
    상기 프론트-엔드 인터페이스는, 상기 메인 프로세서에 라우팅 되기 전에 상기 결과의 적어도 일부를 저장하기 위한 임시 메모리 유닛을 포함하는, 데이터 처리 장치.
  11. 제10항에 있어서,
    상기 임시 메모리 유닛에서 어드레싱 된 메모리 저장 장치는 상기 메인 프로세서의 메인 메모리의 저장 어드레스로 매핑되는, 데이터 처리 장치.
  12. 제1항에 있어서,
    상기 메인 프로세서로부터 메인 프로세서 출력을 수신하고, 상기 메인 프로세서 출력을 사용하여 상기 프론트-엔드 인터페이스는 상기 단일-액세스 데이터를 전처리하도록 구성된, 데이터 처리 장치.
  13. 제1항에 있어서,
    로컬 프로세서 명령이. 상기 전처리를 수행하기 위해, 상기 메인 프로세서를 동작시키도록 구성된 운영 체제에 포함된 장치 드라이버에 의해 생성되는, 데이터 처리 장치.
  14. 데이터 처리 장치에 의해 수행되는 방법으로서,
    저장소에 저장된 데이터를 수신하는 단계 - 상기 저장소는 구체적으로 외부 저장소 및/또는 네트워크 임-;
    상기 데이터를 지정하는 액세스 파라미터를 분석하여 상기 데이터가 단일-액세스 데이터인지 또는 다중-액세스 데이터인지 결정하는 단계;
    메인 프로세서에 의한 처리를 위해 상기 다중-액세스 데이터를 라우팅하는 단계; 및
    프론트-엔드 인터페이스에 의한 전처리를 위해 상기 단일-액세스 데이터를 라우팅하고 상기 전처리의 결과를 상기 메인 프로세서에 라우팅하는 단계
    를 포함하는, 데이터 처리 장치에 의해 수행되는 방법.
  15. 컴퓨터 판독 가능한 매체로서,
    상기 컴퓨터 판독 가능한 저장 매체에 인코딩된 프로그램 코드를 포함하고,
    상기 프로그램 코드는,
    프로세서에 의해 실행 가능하고, 저장소에 저장된 데이터를 수신하기 위한 제1 프로그램 명령 - 상기 저장소는 외부 저장소 및/또는 네트워크 임 -;
    상기 프로세서에 의해 실행 가능하고, 상기 데이터를 지정하는 액세스 파라미터를 분석하여 상기 데이터가 단일-액세스 데이터인지 또는 다중-액세스 데이터인지 결정하기 위한 제2 프로그램 명령;
    상기 프로세서에 의해 실행 가능하고, 메인 프로세서에 의한 처리를 위해 상기 다중-액세스 데이터를 라우팅하기 위한 제3 프로그램 명령; 및
    상기 프로세서에 의해 실행 가능하고, 프론트-엔드 인터페이스에 의한 전처리를 위해 상기 단일-액세스 데이터를 라우팅하고, 상기 전처리의 결과를 상기 메인 프로세서에 라우팅하기 위한 제4 프로그램 명령
    을 포함하는, 컴퓨터 판독 가능한 매체.
KR1020177020721A 2015-03-17 2015-03-17 빅데이터 애플리케이션을 위한 다중-다차원 컴퓨터 구조 KR101955617B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2015/055493 WO2016146166A1 (en) 2015-03-17 2015-03-17 Multi-multidimensional computer architecture for big data applications

Publications (2)

Publication Number Publication Date
KR20170097778A KR20170097778A (ko) 2017-08-28
KR101955617B1 true KR101955617B1 (ko) 2019-03-07

Family

ID=52727106

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177020721A KR101955617B1 (ko) 2015-03-17 2015-03-17 빅데이터 애플리케이션을 위한 다중-다차원 컴퓨터 구조

Country Status (9)

Country Link
US (1) US10417005B2 (ko)
EP (1) EP3227780A1 (ko)
JP (1) JP6683726B2 (ko)
KR (1) KR101955617B1 (ko)
CN (1) CN107408060B (ko)
BR (1) BR112017015942B1 (ko)
CA (1) CA2973031C (ko)
SG (1) SG11201705570SA (ko)
WO (1) WO2016146166A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107408060B (zh) * 2015-03-17 2020-10-16 华为技术有限公司 一种数据处理的方法及装置
CN111124658B (zh) * 2018-10-31 2023-09-29 伊姆西Ip控股有限责任公司 用于处理目标数据的方法、设备和计算机程序产品

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742814A (en) 1995-11-01 1998-04-21 Imec Vzw Background memory allocation for multi-dimensional signal processing
US20020013579A1 (en) * 1997-10-03 2002-01-31 Thomas A. Silvestrini Rotating electrosurgical blade for corneal reshaping
US7174393B2 (en) 2000-12-26 2007-02-06 Alacritech, Inc. TCP/IP offload network interface device
WO2000010084A2 (en) 1998-08-17 2000-02-24 Microsoft Corporation Object load balancing
US6681295B1 (en) * 2000-08-31 2004-01-20 Hewlett-Packard Development Company, L.P. Fast lane prefetching
US7154621B2 (en) * 2001-03-20 2006-12-26 Lightsurf Technologies, Inc. Internet delivery of digitized photographs
US20060259733A1 (en) 2005-05-13 2006-11-16 Sony Computer Entertainment Inc. Methods and apparatus for resource management in a logically partitioned processing environment
US8560795B2 (en) 2005-06-30 2013-10-15 Imec Memory arrangement for multi-processor systems including a memory queue
US7801912B2 (en) 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service
US7908259B2 (en) 2006-08-25 2011-03-15 Teradata Us, Inc. Hardware accelerated reconfigurable processor for accelerating database operations and queries
US20090019869A1 (en) * 2007-07-19 2009-01-22 Girard John M System and method for vapor control in cryogenic freezers
US7966506B2 (en) 2007-12-12 2011-06-21 Intel Corporation Saving power in a computer system
US20090198699A1 (en) * 2008-01-31 2009-08-06 International Business Machines Corporation Remote space efficient repository
US7701251B1 (en) 2008-03-06 2010-04-20 Xilinx, Inc. Methods and apparatus for implementing a stacked memory programmable integrated circuit system in package
JP2012510656A (ja) 2008-11-28 2012-05-10 インチロン ゲーエムベーハー データ処理の方法、システム、およびシミュレーション又は解析モデル
US20100242014A1 (en) * 2009-03-17 2010-09-23 Xiaohan Zhu Symmetric multi-processor operating system for asymmetric multi-processor architecture
US8639852B2 (en) 2009-11-13 2014-01-28 Qualcomm Incorporated Burst access protocol
US20130086036A1 (en) * 2011-09-01 2013-04-04 John Rizzo Dynamic Search Service
US10467212B2 (en) 2012-04-27 2019-11-05 Empire Technology Development Llc Multiple variable coverage memory for database indexing
KR20140005474A (ko) 2012-07-04 2014-01-15 한국전자통신연구원 빅데이터 처리를 위한 애플리케이션 제공 장치 및 제공 방법
US20150205674A1 (en) * 2012-10-31 2015-07-23 Hewlett-Packard Development Company, L.P. Cataloging backup data
JP5982683B2 (ja) * 2013-01-17 2016-08-31 株式会社日立ソリューションズ 計算機システム
US9423959B2 (en) 2013-06-29 2016-08-23 Intel Corporation Method and apparatus for store durability and ordering in a persistent memory architecture
CN103885919B (zh) * 2014-03-20 2017-01-04 北京航空航天大学 一种多dsp和fpga并行处理系统及实现方法
CN104090848B (zh) 2014-07-16 2017-03-08 云南大学 一种周期性大数据处理的内存管理方法及装置
CN104391656A (zh) 2014-11-19 2015-03-04 华为技术有限公司 一种存储设备的io资源分配方法、装置及存储设备
CN104794150A (zh) * 2015-01-30 2015-07-22 北京东方泰坦科技股份有限公司 一种基于空间知识云环境的云存储模型与管理方法
CN107408060B (zh) * 2015-03-17 2020-10-16 华为技术有限公司 一种数据处理的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HAN HU 외 3명. ‘Toward Scalable Systems for Big Data Analytics: A Technology Tutorial’. IEEE Access, Vol.2, 2014.07.08., pp.652-687.*

Also Published As

Publication number Publication date
SG11201705570SA (en) 2017-08-30
BR112017015942B1 (pt) 2019-05-21
US20170371676A1 (en) 2017-12-28
KR20170097778A (ko) 2017-08-28
JP2018509716A (ja) 2018-04-05
BR112017015942A2 (pt) 2018-04-03
JP6683726B2 (ja) 2020-04-22
US10417005B2 (en) 2019-09-17
EP3227780A1 (en) 2017-10-11
WO2016146166A1 (en) 2016-09-22
CA2973031C (en) 2020-06-09
CN107408060A (zh) 2017-11-28
CN107408060B (zh) 2020-10-16
CA2973031A1 (en) 2016-09-22

Similar Documents

Publication Publication Date Title
US8495267B2 (en) Managing shared computer memory using multiple interrupts
US10025361B2 (en) Power management across heterogeneous processing units
US20150143057A1 (en) Adaptive data prefetching
KR102236419B1 (ko) 액세스 요청을 관리하기 위한 방법, 장치, 기기 및 저장 매체
KR102563165B1 (ko) 메모리 액세스 요청 스케줄링 방법, 장치, 기기 및 저장 매체
US20170371761A1 (en) Real-time performance tracking using dynamic compilation
Ouyang et al. Active SSD design for energy-efficiency improvement of web-scale data analysis
US20220075649A1 (en) Migration between cpu cores
US9740618B2 (en) Memory nest efficiency with cache demand generation
Bertran et al. Application-level power and performance characterization and optimization on IBM Blue Gene/Q systems
Fujiki et al. Near-memory data transformation for efficient sparse matrix multi-vector multiplication
Sundriyal et al. Comparisons of core and uncore frequency scaling modes in quantum chemistry application GAMESS
US8904145B2 (en) Adjusting memory allocation of a partition using compressed memory paging statistics
US10417005B2 (en) Multi-multidimensional computer architecture for big data applications
Choi et al. Energy efficient scale-in clusters with in-storage processing for big-data analytics
Liu et al. MLCache: A space-efficient cache scheme based on reuse distance and machine learning for NVMe SSDs
Yang et al. Improving Spark performance with MPTE in heterogeneous environments
JP6823626B2 (ja) データベース管理システム及び方法
Yang et al. Performance evaluation on cxl-enabled hybrid memory pool
Vasudevan et al. FAWNdamentally power-efficient clusters
CN107632779B (zh) 数据处理方法和装置、服务器
Sirin et al. OLTP on a server-grade ARM: power, throughput and latency comparison
US8966133B2 (en) Determining a mapping mode for a DMA data transfer
Kunkel et al. Towards an energy-aware scientific i/o interface
US20140122799A1 (en) Storage device and power saving method thereof

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