KR20120115285A - 외래 컴퓨팅 환경으로 프로세싱 작업을 분담하기 위한 방법 및 시스템 - Google Patents

외래 컴퓨팅 환경으로 프로세싱 작업을 분담하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20120115285A
KR20120115285A KR1020127016698A KR20127016698A KR20120115285A KR 20120115285 A KR20120115285 A KR 20120115285A KR 1020127016698 A KR1020127016698 A KR 1020127016698A KR 20127016698 A KR20127016698 A KR 20127016698A KR 20120115285 A KR20120115285 A KR 20120115285A
Authority
KR
South Korea
Prior art keywords
operating system
queue
control block
computing environment
system service
Prior art date
Application number
KR1020127016698A
Other languages
English (en)
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 KR20120115285A publication Critical patent/KR20120115285A/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
    • 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
    • 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
    • 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
    • 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/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

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)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Advance Control (AREA)

Abstract

제 1 컴퓨팅 환경에서 제 2 컴퓨팅 환경으로(가령, 제 1 인터프리터 에뮬레이션 환경에서, 상기 인터프리터가 실행되는 제 2 네이티브 운영 체제로) 프로세싱 작업을 분담하기 위한 방법 및 시스템이 개시된다. 분담 방법은 제 1 컴퓨팅 환경의 운영 체제 및 제 2 컴퓨팅 환경에 상주하는 하나 이상의 분담 엔진(offload engine)에 의해 액세스 가능한 메모리 큐(memory queue)를 제 1 컴퓨팅 환경에서 사용하는 것을 포함한다. 큐를 이용하여, 제 1 컴퓨팅 환경은 대응하는 분담 엔진에 의해 액세스되도록 제어 블록을 개시 큐에 할당 및 대기시킬 수 있다. 분담 엔진이 제어 블록을 디큐잉하고, 제어 블록 내 프로세싱 작업을 수행하면, 요청된 프로세싱 작업의 성공 또는 실패를 묻기 위해 제어 블록이 결과 큐로 반환된다. 분담 엔진은 개별 컴퓨팅 환경에서 개별 프로세스가 되며, 제 1 컴퓨팅 환경의 어떠한 일부분으로서도 실행되지 않는다.

Description

외래 컴퓨팅 환경으로 프로세싱 작업을 분담하기 위한 방법 및 시스템{METHOD AND SYSTEM FOR OFFLOADING PROCESSING TASKS TO A FOREIGN COMPUTING ENVIRONMENT}
본 출원은 동일자로 출원된 미국 특허 출원 "Method and System for Offloading Processing Tasks to a Foreign Computing Environment"과 관련이 있다.
기술분야
본 출원은 컴퓨팅 환경 및 상기 컴퓨팅 환경에서의 프로세싱 작업에 관한 것이며, 더 구체적으로, 하나의 컴퓨팅 환경에서 또 다른 컴퓨팅 환경으로의 프로세싱 작업 및 그 밖의 다른 자원의 재할당 또는 분담(offload)에 관한 것이다.
컴퓨팅 및 컴퓨팅 프로세스의 분야에서, 이기종 컴퓨팅 환경은 종종, 특정 컴퓨팅 환경에서보다 다른 컴퓨팅 환경에서 프로세싱 작업이 더 효율적으로 수행될 수 있는 상황을 야기한다. 예를 들어, 인터프리터(interpreter)가 운영체제의 인스턴스화 내 애플리케이션으로서 실행 중인 컴퓨팅 환경에서, 인터프리터 내에서 실행 중인 소프트웨어가 또한 운영 체제를 인스턴스화하거나 에뮬레이트한다. 따라서 알고리즘 및 그 밖의 다른 프로세싱 작업이, 특정 운영 체제의 하나 이상의 특성(가령, 이용 가능한 연산자 세트, 실행 속도, 및/또는 특정 운영 체제의 특징 세트(feature set))을 기초로 어느 한 운영 체제에서 더 효율적으로 실행되는 것이 드문 일은 아니다.
예를 들어, 기존 컴퓨터 프로세싱 아키텍처에서, 인터프리터가 특정 프로세서 상에서 실행되는 운영 체제 내부 애플리케이션으로서 실행될 수 있다. 일반적으로, 인터프리터는 상기 인터프리터가 실행 중인 머신 또는 애플리케이션의 네이티브 명령 세트와 상이한 명령, 가령, 연산코드(opcode)와 연산자를 번역하는 특수 범주의 프로그램이다. 일반적으로, 인터프리터는 실행될 코드를 수신하고, 일반적으로 하이 레벨 프로그래밍 언어로 써진 비-네이티브(non-native) 컴퓨터 명령을 네이티브(native) 컴퓨터 명령으로 번역한다.
따라서, 인터프리터는, 일반적으로 특정 프로세서 및 운영 체제의 외래 명령 세트 및 프로세서 환경을 에뮬레이트(emulate)한다. 그러나 에뮬레이트된 환경이 에뮬레이트된(비-네이티브) 운영 체제를 실행시킬 수 있는 것이 일반적이다. 따라서 다양한 프로세싱 작업을 하나의 컴퓨팅 환경에서 또 다른 컴퓨팅 환경으로(가령, 인터프리터에 의해 에뮬레이트된 환경에서, 상기 인터프리터 애플리케이션이 실행되고 있는 운영 체제 컴퓨팅 환경으로) 분담하는 것이 바람직할 수 있다.
하나의 컴퓨팅 환경에서 또 다른 컴퓨팅 환경으로 일을 분담하기 위한 종래의 방법이 존재하다. 그러나 일반적으로 네트워크 기반 프로세스인 이러한 종래의 방법의 복잡도와 성능이 상당히 다르다. 예를 들어, 많은 종래의 방법이 다양한 작업 분담을 수행하기 위해 하나 이상의 외부 함수를 호출한다. 그러나 에뮬레이트된 컴퓨팅 환경으로부터 작업을 분담할 때, 많은 종래의 접근법은 인터프리터의 비교적 내부 지식(intimate knowledge)을 필요로 하며, 네이티브 운영 체제 내 프로그램 라이브러리(program library)의 프로그래밍 에러에 취약할 수 있으며, 이러한 프로그래밍 에러는 인터프리터 자체에 장애를 일으킬 수 있고, 전체 인터프리터에 의해 에뮬레이트되는 환경의 충돌을 초래할 수 있다.
제 1 컴퓨팅 환경에서 제 2 컴퓨팅 환경으로(가령, 제 1 인터프리터 에뮬레이션 환경에서, 상기 인터프리터가 실행되는 제 2 네이티브 운영 체제로) 프로세싱 작업을 분담하기 위한 방법 및 시스템이 개시된다. 종래의 분담 프로세스는, 제 1 컴퓨팅 환경과 제 2 컴퓨팅 환경 사이에 있는 네트워크 장치를 통한, 제 1 컴퓨팅 환경과 제 2 컴퓨팅 환경 간의 명령어 실행을 포함한다. 하나의 실시예에 따르는 분담 방법은 제 1 컴퓨팅 환경의 운영 체제 및 제 2 컴퓨팅 환경에 상주하는 하나 이상의 분담 엔진(offload engine)에 의해 액세스 가능한 메모리 큐(memory queue)를 제 1 컴퓨팅 환경에서 사용하는 것을 포함한다. 이러한 방식으로, 하나의 실시예에 따르는 분담 방법은, 종래의 분담 프로세스에서 사용되는 두 컴퓨팅 환경들 간 네트워크 연결 액세스가 아닌, 직접 메모리 액세스를 기초로 한다. 메모리 큐(가령, 요청 큐 또는 개시 큐 및 결과 큐)를 이용하여, 제 1 컴퓨팅 환경은 대응하는 분담 엔진에 의해 액세스되도록 제어 블록을 개시 큐에 할당 및 대기시킬 수 있다. 분담 엔진이 제어 블록을 디큐잉하고, 제어 블록 내 프로세싱 작업을 수행하면, 요청된 프로세싱 작업의 성공 또는 실패를 묻기 위해 제어 블록이 결과 큐로 반환된다. 이러한 방식으로, 분담 엔진은 개별 컴퓨팅 환경에서 개별 프로세스가 되며, 제 1 컴퓨팅 환경의 어떠한 일부분으로서도 실행되지 않는다. 따라서, 분담 엔진에서의 치명적인 프로그래밍 에러가 제 1 컴퓨팅 환경의 어떠한 부분에도 장애를 초래하지 않을 것이며, 따라서 제 1 컴퓨팅 환경은 회복성(resilient)과 신뢰성을 더 지니게 된다. 대응하는 분담 엔진이 충돌할 때, 분담된 프로세싱 작업의 큐 대기(queuing)가 중단될지라도, 제 1 컴퓨팅 환경에 나쁜 영향이 미치지 않을 것이다.
도 1은 종래 방식에 따르는, 네이티브 프로세서에 의해 실행되는 네이티브 운영 체제를 갖는 컴퓨팅 환경과, 네이티브 운영 체제 내 에뮬레이트된 환경으로서 실행되는 컴퓨팅 환경을 포함하는 이기종 컴퓨팅 환경의 세트의 개략도이다.
도 2는 하나의 실시예에 따라, 이기종 컴퓨팅 환경의 세트의 개략도이다.
도 3은 하나의 실시예에 따라, 가령, 제어 영역 내의 큐의 예시적 구조의 개략도이다.
도 4는 하나의 실시예에 따라, 제어 블록의 개략도이다.
도 5는 하나의 실시예에 따라, 하나의 컴퓨팅 환경에서 또 다른 하나의 컴퓨팅 환경으로 프로세싱 작업을 분담하는 방법의 순서도이다.
도 6은 또 다른 하나의 실시예에 따라, 하나의 컴퓨팅 환경에서 또 다른 컴퓨팅 환경으로 프로세싱 작업을 분담하는 방법의 순서도이다.
이하의 기재에서, 도면을 통해, 컴퓨팅 프로세스를 하나의 컴퓨팅 환경에서 또 다른 하나의 컴퓨팅 환경으로 분담하기 위한 본 발명의 방법 및 시스템의 이해를 향상시키기 위해, 유사한 도면부호는 유사한 구성요소를 가리킨다. 또한, 특정 특징, 구성 및 배열이 이하에서 설명되지만, 이러한 설명은 단지 예를 들기 위한 것이다. 통상의 기술자라면 본 발명의 사상과 범위 내에서 그 밖의 다른 단계들, 구성, 및 배열이 사용될 수 있음을 알 것이다.
도 1은 이기종 컴퓨팅 환경들(가령, 제 1 컴퓨팅 환경(12)과 하나 이상의 제 2 컴퓨팅 환경(14))로 구성된 세트의 개략적 도시이다. 제 1 컴퓨팅 환경(12)은 임의의 적합한 컴퓨팅 환경일 수 있는데, 가령, 제 1 컴퓨팅 환경(12)은 에뮬레이션 또는 에뮬레이트된 환경(16) 자체이거나, 이를 포함할 수 있다. 에뮬레이트된 환경(16)은 에뮬레이트된 프로세서(18)(즉, 인터프리터), 에뮬레이트된 메모리 또는 메모리 요소(22), 및 통상 에뮬레이트된 메모리(22)에 상주하는 운영 체제(OS)(24)를 포함하는 것이 일반적이다.
예를 들어, 제 1 컴퓨팅 환경(12)이 마스터 제어 프로그램(MCP: Master Control Program) 환경을 포함하는 경우, 에뮬레이트된 프로세서(18)는 E-모드 인터프리터이며, 에뮬레이트된 메모리는 E-모드 메모리이고, E-모드 메모리 내 운영 체제(24)는 MCP이다. 통상적으로 알려져 있다시피, MCP는 많은 Unisys Corporation 메인프레임 컴퓨터 시스템에서 사용되는 사설 운영체제이다.
제 2 컴퓨팅 환경(14)이 임의의 적합한 컴퓨팅 환경(가령, 프로세서 또는 네이티브 프로세서(26), 메모리 또는 메모리 디바이스(28), 및 메모리(28)에 상주하는 운영 체제 또는 네이티브 운영 체제(32)를 포함하는 컴퓨팅 환경)일 수 있다. 제 2 컴퓨팅 환경(14)에서, 운영 체제(32) 및 그 밖의 다른 메모리(28) 부분이, 인터페이스(34)를 통해, 프로세서(26)와 인터페이싱할 수 있다. 또한 제 2 컴퓨팅 환경(14)은, 인터페이스(34)를 통해, 제 1 컴퓨팅 환경(12)의 부분들과 인터페이싱할 수 있다. 마찬가지로, 에뮬레이션 또는 에뮬레이트된 환경(16)이, 인터페이스(34)를 통해, 프로세서(26) 또는 그 밖의 다른 제 2 컴퓨팅 환경의 부분들과 인터페이싱할 수 있다. 이 환경에서, 일반적으로 인터페이스(34)는 에뮬레이트된 메모리(22)에 상주하는 데이터 구조의 세트이지만, 그 밖의 다른 구성도 가능하다.
앞서 언급된 바와 같이, 에뮬레이트된 환경에서, 에뮬레이트된 프로세서(18)가 운영 체제(가령, 또 다른 컴퓨팅 환경의 네이티브 운영 체제)내에서, 애플리케이션으로서 실행되는 것이 일반적이다. 따라서 종종, 에뮬레이트된 환경은 비-네이티브 환경(non-native environment)이라고 일컬어지고, 에뮬레이트된 메모리(22) 내에서 실행되는 운영 체제(24)는 비-네이티브 운영 체제라고 일컬어진다. 따라서 본원에서 설명을 목적으로 제 1 컴퓨팅 환경(12)과 제 2 컴퓨팅 환경(14)이 개별적인 개체로 나타나지만, 일반적으로, 에뮬레이트된 환경(16)의 전체 또는 일부가 메모리 디바이스(28) 내 네이티브 운영 체제(32)에서 실행되는 애플리케이션의 일부임을 이해해야 한다. 그러나 제 1 컴퓨팅 환경(12)과 제 2 컴퓨팅 환경(14)은 그들 사이에 임의의 적합한 물리적 또는 논리적 결합 장치를 가질 수 있음을 알아야 한다.
에뮬레이트된 환경(16)으로부터 제 2 컴퓨팅 환경(14)으로의 지향적 액세스는 단방향성이며, 반면에, 제 2 컴퓨팅 환경(14)에서 에뮬레이트된 환경(16)으로의 지향적 액세스는 양방향성이다. 즉, 제 2 컴퓨팅 환경(14)은 에뮬레이트된 컴퓨팅 환경(16) 내 메모리를 조사하고 액세스할 수 있지만, 에뮬레이트된 컴퓨팅 환경(16)은 제 1 컴퓨팅 환경(12) 내 메모리 위치(memory location)로부터(로) 읽기(쓰기)만 가능하며, 제 2 컴퓨팅 환경(14) 내 메모리 위치로부터(로) 읽기(쓰기)는 안 된다.
앞서 언급된 바와 같이, 특정 알고리즘 및 그 밖의 다른 프로세싱 작업이 하나의 컴퓨팅 환경(가령, 에뮬레이트된 환경(16))에서보다 다른 하나의 컴퓨팅 환경(가령, 네이티브 운영 체제(32)) 내에서 더 효율적으로 실행될 수 있다. 따라서, 다양한 프로세싱 작업을 하나의 컴퓨팅 환경에서 또 다른 하나의 컴퓨팅 환경으로(가령, 에뮬레이트된 환경(16)에서 상기 에뮬레이트된 환경(16)이 실행되는 운영 체제 컴퓨팅 환경(32)으로) 분담하는 것이 바람직할 수 있다.
예를 들어, 다양한 암호화 프로세싱 작업이 네이티브 환경에 대한 산업적으로 허용되는 구현예를 가질 수 있지만, 비-네이티브 환경에서 잘 수행되지 않거나 비-네이티브 환경에서 구현되기 엄청나게 비쌀 것이다. 분담에 적합한 또 다른 예시적 프로세싱 작업은 특수화된 수학적 계산일 수 있으며, 여기서 인터프리터 내 에뮬레이트된 부동소수점 루틴에 의존하는 것과 달리, 네이티브 환경은 부동소수점 가속을 위한 하드웨어 지원을 가진다. 분담에 적합한 또 다른 프로세싱 작업으로는, 제조업자에 의해 네이티브 운영 체제에 제공되는 드라이버를 갖는 특수 하드웨어(가령, 스테퍼 모터 또는 그 밖의 다른 기계의 인터페이스)를 제어하는 것일 수 있다. 이러한 인터페이스의 경우, 에뮬레이트된 환경에서 최대 제어를 제공하기 위해, 드라이버 호출(driver call)들로 직접 묶이는 비-네이티브 인터페이스를 개발하는 것보다, 인터페이스를 하이 레벨로 추상화하고, 에뮬레이트된 환경이 이들 하이 레벨 함수를 분담 엔진(offload engine)을 통해 요청하게 하는 것이 더 효율적이다.
이러한 경우에서 종래의 분담 방법은, 에뮬레이트된 프로세서(18)에 의한 프로세스 실행과, 에뮬레이트된 프로세서(18)가 네이티브 운영 체제(32) 내 프로그램 라이브러리로 들어갈 수 있는 능력을 직접 포함하는 네트워크 기반 프로세스이다. 따라서 이러한 접근법은 에뮬레이트된 프로세서(18)의 비교적 내부 지식(intimate knowledge)을 필요로 한다. 또한, 에뮬레이트된 프로세서(18) 내로부터 분담된 호출을 포함하는 기법은 네이티브 운영 체제(32) 내 프로그램 라이브러리의 프로그래밍 에러에 취약할 수 있다. 이러한 에러는 에뮬레이트된 프로세서(18) 자체에 장애를 일으키고, 이는 전체 에뮬레이트된 환경(16)의 충돌을 초래할 수 있다. 또한, 에뮬레이트된 프로세서(18)에 의한, 네이티브 운영 체제(32) 내 프로그램 라이브러리로의 액세스는 통상적으로, 에뮬레이트된 프로세서(18)와 상기 프로그램 라이브러리 간 네트워크 연결을 이용하는 것을 포함하며, 이러한 네트워크 연결은 컴퓨팅 환경이 위치하는 네트워크 환경의 전체적인 제한의 대상일 수 있다.
본원에 기재된 발명의 방법 및 장치는, 제 1 컴퓨팅 환경의 운영 체제뿐 아니라, 제 2 컴퓨팅 환경에서 생성된 하나 이상의 분담 엔진에 의해서도 액세스 가능한, 제 1 컴퓨팅 환경의 메모리 부분의 메모리 큐(memory queue)를 이용함으로써, 프로세싱 작업을 제 1 컴퓨팅 환경에서 제 2 컴퓨팅 환경으로 분담하기 위해 제공된다. 일반적으로, 제 1 컴퓨팅 환경은, 가령, 자신의 운영 체제를 통해, 프로세싱 작업을, 제어 블록(control block)의 형태로, 요청 큐 또는 개시 큐에 인큐잉(enqueue)한다. 개시 큐에서 대기하는 제어 블록 내 프로세싱 작업은, 큐를 서비스하는 중, 또는 서비스할 예정인 대응하는 분담 엔진의 종류에 따라 달라지는 것이 일반적이다. 대응하는 분담 엔진은 첫 번째 이용 가능한 제어 블록을 액세스하거나, 큐에서 디큐잉(dequeue)하며, 요청을 처리한다, 즉, 큐에서 디큐잉된 제어 블록의 프로세싱 작업을 수행한다. 그 후, 분담 엔진이 결과 큐(result queue)에, 분담 엔진이 프로세싱 작업을 수행했고 완료했음을 충분히 가리키는 적절한 정보를 위치시킨다. 그 후, 분담 엔진은 요청 큐에서 다음번 이용 가능한 제어 블록을 액세스하거나 디큐잉하고, 상기 제어 블록의 프로세싱 작업을 수행하며, 결과 큐에 상기 프로세싱 작업을 수행했고 완료했음을 충분히 가리키는 적절한 정보를 인큐잉한다. 이러한 분담 엔진의 큐잉 프로세스(queuing process)는, 요청 큐로부터의 모든 제어 블록이 디큐잉(dequeue)되고 프로세싱될 때까지 계속된다. 이러한 방식으로, 종래의 분담 방법 및 장치에 비교할 때, 본 발명의 방법 및 장치에 의해, 복잡도는 낮고, 특수 지식은 덜 필요할 채, 제 1 컴퓨팅 환경에서 제 2 컴퓨팅 환경으로의 프로세싱 작업의 비교적 용이한 재할당 및 수행이 가능하다.
제어 블록이 요청 큐로부터 순차적으로(serially) 디큐잉되더라도, 프로세싱 작업은 순차적으로 수행될 필요가 없다. 예를 들어, 디큐잉된 프로세싱 작업이 병렬로 수행되도록, 디큐잉된 하나 이상의 프로세싱 작업이, 분담 엔진에 의해 또 다른 작업자 스레드에게로 미뤄질 수 있다.
도 2는 제 1 컴퓨팅 환경(12)과 제 2 컴퓨팅 환경(14)의 일부분의 개략적 도시이며, 제 1 컴퓨팅 환경(12)에서의 메모리 큐와 제 2 컴퓨팅 환경(14)에서의 분담 엔진을 보여준다. 제 1 컴퓨팅 환경(12)의 메모리 요소(22)에는 하나 이상의 제어 영역이 위치한다. 예를 들어, 메모리(22)는 제 1 제어 영역(36)으로 시작하여 제 n의 제어 영역(38)으로 끝나는 복수의 제어 영역을 포함한다. 제어 영역은 임의의 적합한 방식으로, 가령, 본 발명의 분담 방법의 일부로서, 생성되거나 확립된다.
각각의 제어 영역은 요청 큐 또는 개시 큐와, 결과 큐와, 풀 큐(pool queue)를 포함한다. 예를 들어, 제 1 제어 영역(36)은 제 1 요청 큐 또는 개시 큐(42)와, 제 1 결과 큐(44)를 포함한다. 제 1 제어 영역(36)은 제 1 풀 큐(46)도 포함할 수 있다. 마찬가지로, 제 n 제어 영역(38)은 제 n 요청 또는 개시 큐(48)와, 제 n 결과 큐(52)를 포함한다. 제 n 제어 영역(38)은 또한 제 n 풀 큐(54)도 포함할 수 있다. 이하에서 더 상세히 기재되겠지만, 각각의 큐는 복수의 제어 블록을 포함하며, 각각의 제어 블록은, 제어 블록이 차지하고 있거나, 디큐잉되는 큐가 무엇인지에 따라, 다양한 프로세싱 작업 정보를 포함한다.
제 2 컴퓨팅 환경(14)은, 각각의 제어 영역에 대응하는 분담 엔진을 포함한다. 따라서, 도 2에 도시된 예시적 컴퓨팅 환경에서, 제 2 컴퓨팅 환경(14)은, 제 1 제어 영역(36)에 대응하는 제 1 분담 엔진(56)으로 시작하고, 제 n 제어 영역(38)에 대응하는 제 n 분담 엔진(58)으로 끝나는 복수의 분담 엔진을 포함한다. 복수의 제 2 컴퓨팅 환경이 존재할 수 있고, 모든 분담 엔진이 하나의 제 2 컴퓨팅 환경에 상주할 필요는 없음을 이해해야 한다. 또한, 하나 이상의 분담 엔진의 전부 또는 일부가, 부분적으로 또는 완전히, 소프트웨어의 형태로(가령, 프로세싱 명령 및/또는 논리 코드 또는 컴퓨터 코드의 하나 이상의 세트로서) 구성될 수 있음도 알아야 한다. 이러한 구성에서, 논리 또는 프로세싱 명령이 데이터 저장 장치, 가령, 메모리 요소(28)에 저장되고, 네이티브 프로세서(26)에 의해, 네이티브 운영 체제(32) 내 하나 이상의 애플리케이션으로서 액세스되고 실행되는 것이 일반적이다. 또는, 분담 엔진들 중 하나 이상이, 부분적으로 또는 완전히, 하드웨어 회로 및/또는 그 밖의 다른 더 큰 장치나 구성요소 그룹 내 하드웨어 구성요소의 형태로(가령, 특수 하드웨어 요소 및 논리소자를 이용해) 구성될 수 있다. 분담 엔진은 임의의 적합한 방식으로, 가령, 본 발명의 분담 방법의 일부로서, 인스턴스화될 수 있다. 예를 들어, 분담 엔진은 각자의 컴퓨팅 환경에서 서비스 즉 "대몬(daemon)"으로서 생성될 수 있다. 또한 에뮬레이트된 프로세서(18)가 제 2 컴퓨팅 환경(14)에서 프로세스를 스폰(spawn)하기 위한 수단을 갖는 경우, 비-네이티브 명령 스트림의 지시 하에서 에뮬레이트된 프로세서(18)에 의해 분담 엔진이 인스턴스화될 수 있다. 또한, 추가 분담 엔진들을 스폰하는 목적으로, 하나의 분담 엔진이 개발될 수 있다.
제 1 컴퓨팅 환경(12)의 메모리 요소(22)에 위치하는 각각의 제어 영역에 대해, 일반적으로, 분담 엔진이 인스턴스화될 때 제어 영역의 베이스가 대응하는 분담 엔진으로 전달된다. 이러한 방식으로, 각각의 분담 엔진은 자신 고유의 전용 제어 엔진을 가지며, 이로써, 하나의 분담 엔진이 또 다른 하나의 분담 엔진과 간섭을 일으키지 않을 것임이 보장된다. 또한 이러한 배열에서, 각각의 제어 영역은 하나의 분담 엔진에 의해서만 사용되는 것이 일반적이다.
각각의 제어 영역은, 본 발명의 분담 방법을 수행할 때, 제어 영역의 대응하는 분담 엔진과 함께 상기 제어 영역의 적합한 동작을 가능하게 하는 적절한 데이터 구조를 포함한다. 예를 들어, 각각의 제어 영역은, 제어 영역이 분담 엔진 제어 영역으로서 상주하는 메모리의 특정 영역을 식별하는 제어 워드(control word), 가령, 마크 워드(Mark Word) 제어 워드를 포함할 수 있다. 또한 각각의 제어 영역은 요청 큐 또는 개시 큐의 베이스의 절대 주소(가령, INIT_Q)를 포함하는 제어 워드와 결과 큐의 베이스의 절대 주소(가령, RSLT_Q)를 포함하는 제어 워드를 포함할 수 있다. 또한 각각의 제어 영역은 풀 큐의 베이스의 절대 주소(가령, POOL_Q)를 포함하는 제어 워드를 포함할 수 있다. 또한 각각의 제어 영역은, 제어 블록 제거, 배치, 교체, 및/또는 그 밖의 다른 적합한 제어 블록 기능을 위한 다양한 큐 내에서 특정 제어 블록을 식별하는 하나 이상의 제어 워드를 포함할 수 있다.
또한 각각의 제어 영역은 제어 워드를 포함할 수 있고, 이러한 제어 워드는 제어 영역에 대응하는 분담 엔진이 체크할 때 업데이트한다. 이러한 업데이트는 분담 엔진이 자신의 대응하는 제어 영역으로부터 제어 블록을 수신할 수 있음을 의미한다. 이 제어 워드는 분담 엔진 버전 워드(Offload Engine Version Word) 제어 워드라고 지칭될 수 있다. 예를 들어, 특정 분담 엔진은 상기 분담 엔진 버전 워드(Offload Engine Version Word) 제어 워드에, 분담 엔진의 수정 레벨(revision level)을 가리키는 값을 저장한다. 또한, 분담 엔진이 종료될 때, 분담 엔진은 분담 엔진 버전 워드(Offload Engine Version Word) 제어 워드를 0(zero)으로 쓴다. 분담 엔진에 의한 이러한 행동은 분담 엔진이 더 이상 제 1 컴퓨팅 환경(12)의 메모리 부분(22)을 액세스할 것이 아님을 의미한다.
대응하는 분담 엔진에 의해 제어 영역이 발견되는 방식이 지금부터 기재된다. 제 1 컴퓨팅 환경(12)은, 가령, 자신의 운영 체제를 통해, 모든 제어 영역을 할당하는 일(즉, 형성된 분담 엔진 각각에 대해 대응하는 제어 영역을 하나씩 할당하는 일)을 한다. 각각의 제어 영역의 부분이 할당되면, 운영 체제 또는 그 밖의 다른 제 1 컴퓨팅 환경(12)의 적절한 부분이 각각의 제어 영역의 마크 워드(Mark Word) 제어 워드를 적절한 초기 값, 또는 값 표기(즉, 문자)로 초기화한다. 또한, 각각의 제어 영역에서 분담 엔진 버전 워드(Offload Engine Version Word) 제어 워드는 초기에 0으로 설정된다. 마찬가지로, 각각의 제어 영역 내 큐 구조를 구성하거나 정의하는 제어 워드가 적합하게 초기화된다. 특정 큐가 사용되지 않는 경우, 상기 큐의 제어 워드들이 0으로 초기화된다. 각각의 제어 영역이 초기화되면, 대응하는 분담 엔진에게 제어 영역의 주소가 알려진다. 통상적으로, 이 주소의 값은, 명령어 행 인자(command line argument)로서 대응하는 분담 엔진으로 전달된다. 이러한 방식으로 대응하는 분담 엔진으로 제어 영역 주소를 제공함으로써, 서로 다른 분담 엔진이 서로 다른 제어 영역으로 연결될 수 있다.
제 1 컴퓨팅 환경(12)의 메모리(22) 내 제어 영역의 할당이 프로세싱 작업의 분담 및 분담된 프로세싱 작업의 실행 전에 이뤄지는 것이 일반적이다. 그러나 대안적으로, 제 1 컴퓨팅 환경(12)의 운영 체제는, 기존 분담 엔진과 함께, 프로세싱 작업의 분담 및/또는 실행 과정에서 제어 영역을 동적으로 추가할 수 있다. 예를 들어, 프로세싱 작업들 중 하나가, 분담되는지 여부에 무관하게, 추가 큐에 대한 요청일 수 있다. 충분한 자원이 제 1 컴퓨팅 환경(12)의 메모리(22) 내에 있다고 가정하면, 할당 요청에 응답하여, 제 1 컴퓨팅 환경(12)의 운영 체제가 요청된 제어 영역을 동적으로 할당하고, 새로운 제어 영역의 주소를, 가령, 분담 엔진이 캡처 및 보유할 수 있을 제어 블록 데이터 버퍼의 일부로서, 대응하는 분담 엔진으로 전달할 수 있다.
앞서 설명된 바와 같이, 각각의 제어 영역은 하나 이상의 큐, 가령 요청 큐 또는 개시 큐와 결과 큐를 포함한다. 또한 각각의 제어 영역은 풀 큐를 포함할 수 있다. 제어 블록이 각자의 제어 영역으로부터 제어 영역의 대응하는 분담 엔진으로(그리고 분담 엔진에서 제어 영역으로) 전달되는 방식은 이들 큐를 이용한다. 제어 영역의 각각의 큐는 제 1 컴퓨팅 환경(12)에서 메모리 요소(22)의 인접 영역이고, 특정 제어 영역의 데이터 구조에서 정의된 크기를 가진다. 임의의 특정 시점에서, 특정 큐의 각각의 워드는, 큐의 항목(entry)이 비어 있음을 가리키는 0(zero)의 값, 또는 상기 큐 위치에 인큐잉된 제어 블록의 베이스의 절대 주소를 가리키는 양의 정수를 가진다.
도 3은 하나의 실시예에 따르는, 예시적 큐 또는 큐 구조(60)의 개략적 도시이다. 일반적으로, 큐 구조(60)는 제어 영역이 가리키는 모든 큐에 대해 동일하다. 큐 구조(60)의 다양한 슬롯 내 데이터 값은, 큐 구조(60)의 일반적인 동작의 일부를 보여주기 위해 나타낸 예시적 데이터 값이다.
큐 구조(60)는 복수의 슬롯 또는 데이터 슬롯(62), Q_IN 항목 또는 포인터(64) 및 Q_OUT 항목 또는 포인터(66)를 포함한다. 데이터 슬롯(62)은, 가령 큐의 대응하는 분담 엔진(68)에 의해 쓰고 읽히는 데이터 값을 갖도록 구성된다. 제어 블록은 큐(60)에 인큐잉되고 큐(60)로부터 디큐잉되는 데이터 항목이다. Q_IN 항목(64)이 다음번 제어 블록이 인큐잉될 데이터 슬롯을 가리킨다. Q_OUT 항목(66)은 다음번 제어 블록이 디큐잉될 데이터 슬롯을 가리킨다. 분담 엔진(68)은 제어 블록을 큐 구조(60)로 인큐잉하는 인큐어(enqueuer, 72)와, 제어 블록을 디큐잉하는 디큐어(dequeuer, 74)를 포함한다. 그러나 인큐어(72) 및/또는 디큐어(74)는 분담 엔진(68) 외부의 자립형 장치거나, 분담 엔진(68)이 아닌 또 다른 적합한 장치의 일부로서 포함될 수 있음을 알아야 한다.
예시적 큐 구조에서 나타난 바와 같이, Q_IN 항목(64)은, (0과 비교할 때)큐(60)의 제 6 슬롯(일반적으로 제 6 슬롯(76)이라고 나타남)을 가리키는 6의 값을 가진다. 이 예에서, 제 6 슬롯(76)은 다음번 제어 블록이 대기할 곳이다. 제 6 슬롯(76)이 현재 0의 값을 갖기 때문에 제 6 슬롯(76)은 비어있으며, 상기 제 6 슬롯에 즉시 새로운 제어 블록이 인큐잉될 수 있다. 제 6 슬롯(76)(또는 그 밖의 다른 임의의 데이터 슬롯)이 0이 아닌 값 또는 데이터 항목을 갖는 경우, 이는 디큐어(dequeuer, 74)가 제어 블록을 아직 디큐잉하지 않았음을 의미할 것이다. 이러한 경우, 인큐잉이 발생될 수 있기 전에, 인큐어(enqueuer, 72)는 특정 데이터 슬롯이 디큐잉딜 때까지 대기해야 할 것이다. 인큐어(72)가 데이터를 다른 임의의 적절한 위치, 가령, 디스크나 또 다른 적절한 메모리 영역으로 큐잉하는 것이 가능할 수 있다. 그러나 0이 아닌 데이터 항목이 인큐어(72)에 의해 덮어써질 수는 없다.
예시적 큐 구조에서 나타난 바와 같이, Q_OUT 항목(66)은, (0과 비교할 때) 큐(60)의 제 3 슬롯(일반적으로 슬롯(78)이라고 나타남)을 가리키는 3의 값을 가진다. 이 예에서, 제 3 슬롯(78)은 다음번 제어 블록이 디큐잉될 곳이다. 이 예에서, 제 3 슬롯(78)은 데이터 값 0x1872(십진수로 6258)을 포함한다. 이 데이터 값은 절대 주소 0x1872에 위치하는 제어 블록(82)을 가리킨다. 디큐어(74)는 제 3 슬롯에서 값(즉, 데이터 값 0x1872)을 읽고, 값 0으로 상기 제 3 슬롯을 덮어쓰고, 롤오버(rollover)를 고려하여 Q_OUT 항목(66)의 값을 1만큼 증분함으로써, 데이터 슬롯 항목을 디큐잉할 것이다. Q_OUT 항목(66)이 값 0을 갖는 슬롯(62)을 가리키는 경우, 특정 슬롯이 비어 있고, 대응하는 분담 엔진(68)은 어떠한 큐-대기 중인 제어 블록을 갖지 않는다.
각각의 인큐잉 동작 동안, 하나씩의 제어 블록 데이터 개체가 인큐잉되고, 각각의 디큐잉 동작 동안 하나씩의 제어 블록 데이터 개체가 디큐잉된다. 따라서 큐 구조 자체에 대해 어떠한 잠금(locking)도 필요하지 않다.
또한, 모든 큐 항목이 원자적으로 업데이트된다(updated atomically), 즉, 단일 메모리 사이클로 전체 값이 완전히 업데이트된다. 그러나 분담 엔진은, 분담 엔진이 적절하다고 추정되는 임의의 적합한 방식으로 제어 블록 실행을 자유롭게 멀티스레딩하지만 이러한 경우, 단일 스레드가 큐를 핸들링해야 한다.
도 4는 하나의 실시예에 따르는 예시적 제어 블록(84)의 개략적 도시이다. 제어 블록(84)은 메모리에 상주하며 본질적으로 선형(linear)인 데이터 구조이다. 제어 블록(84)은 분담 엔진 독립 영역(86)과, 분담 엔진 종속 영역(88)과, 운영 체제 소프트웨어 사용을 위해 예약된 영역(92)을 가진다. 분담 엔진 독립 영역(86)은, 제어 블록을 액세스하는 분담 엔진의 유형에 무관하게, 모든 제어 블록에 대해 동일한 구조를 가진다. 분담 엔진 종속 영역(88)은, 대응하는 제어 블록을 액세스하는 분담 엔진의 유형과 수정(revision)에 종속적일 수 있다. 분담 엔진이, 특정 아이템을 생성 및 소비하는 소프트웨어(가령, 운영 체제 소프트웨어, 가령, MCP)에게만 유의미한 상기 특정 아이템을 포함하는 운영 체제 영역(92)을 액세스하는 것이 금지된다.
각각의 제어 블록은 제어 블록 아이템을 유지하기 위한 적절한 포맷을 포함한다. 예를 들어, 각각의 제어 블록은, 특정 제어 블록을 표적으로 삼는 분담 엔진의 유형을 식별하는 문자(literal)를 포함하는 제어 블록 워드, 가령, MARK 제어 블록 워드를 포함할 수 있다. 또한, 각각의 제어 블록은, 제어 블록의 버전을 기술하는 데이터 항목을 포함하는 제어 블록 워드, 가령, VERSION 제어 블록 워드를 포함할 수 있다. 적절한 동작을 위해, 제어 블록을 표적으로 하는 분담 엔진과 제어 영역 컴퓨팅 환경에 상주하는 운영 체제는, 특정 수정 레벨(revision level)에서 특정 분담 엔진용 제어 블록에게, 동일한 정의(definition)를 가질 수 있다. 두 개체가 모두 동일한 정의를 갖는 한, 운영 체제, 분담 엔진, 제어 블록의 프로세싱 간의 상호대화가 적절하게 이뤄질 것이다.
또한, 각각의 제어 블록은, 대응하는 제어 블록을 실행하는 개체가 수행을 하라는 지시어(directive)인 숫자(일반적으로 정수)를 포함하는 제어 블록 워드, 가령, 지시(DIRECTIVE) 제어 블록 워드를 포함할 수 있다. 각각의 제어 블록은, 실행의 결과를 나타내는 실제 값, 일반적으로 비트 마스크(bit mask)를 포함하는 제어 블록 워드, 가령, 결과(RESULT) 제어 블록 워드를 포함할 수 있다. 일반적으로, 결과(RESULT) 제어 블록 워드로, 값 0은 어떠한 실행 오류도 없음을 의미한다.
또한, 각각의 제어 블록은, 대응하는 제어 블록과 연계된 데이터 버퍼의 베이스의 주소를 포함하는 버퍼 주소 제어 블록 워드, 가령, BUFF_ADRS를 포함할 수 있다. 다수 유형의 지시(DIRECTIVE)는 하나의 개체에서 다른 개체로 데이터를 전달하고, 버퍼 주소 제어 블록 워드는 이 버퍼의 베이스가 위치할 수 있는 주소를 포함한다. 각각의 제어 블록은, BUFF_ADRS 제어 블록 워드가 가리키는 영역 내에 포함되는 연속 메모리의 워드 수를 기술하는 버퍼 길이 제어 블록 워드, 가령, BUFF_LEN을 포함할 수 있다. 각각의 제어 블록은, BUFF_ADRS 제어 블록 워드가 가리키는 영역에서 유효한 데이터의 바이트 수를 기술하는 버퍼 유효 데이터 제어 블록 워드, 가령, BUFF_DL을 포함할 수 있다. 참조된 데이터가 할당된 메모리의 크기를 넘지 않도록, 버퍼 유효 데이터 제어 블록 워드의 값은 버퍼 길이 제어 블록 워드의 값에, 워드당 바이트 수를 곱한 값보다 작거나 같아야 한다.
각각의 제어 블록은, 분담 엔진 종속 영역(88)의 첫 번째, 두 번째, 및 마지막 워드에 대해 별도의 제어 워드를 더 포함할 수 있다. 또한 각각의 제어 블록은, 운영 체제 종속 영역(92)의 첫 번째, 두 번째, 및 마지막 워드에 대해 별도의 제어 워드를 포함할 수 있다.
각각의 제어 블록은 복수의 타임스탬프 워드(timestamp word)를 더 포함하며, 예를 들어, 제어 블록 워드는, 대응하는 제어 블록이 개시 큐, 결과 큐, 및 풀 큐 중 하나로 삽입되거나, 이로부터 제거된 때의 타임스탬프를 포함한다. 타임스탬프 워드는 제어 블록 실행의 진행을 추적하는 데 도움이 된다. 또한, 모든 제어 블록이 운영 체제, 가령, MCP에 의해 액세스 가능한 메모리 부분에 있기 때문에, 에러가 발생하고 메모리 덤프(memory dump)가 취해지는 경우 진단자(diagnostician)에게 모든 제어 블록의 상태가 쉽게 보인다. 타임스탬프 정보를 기초로, 진단자는 제어 블록이 어느 큐로 언제 삽입되는지, 그리고 제어 블록이 어느 큐로부터 언제 제거되는지를 알 수 있다. 또한 타임스탬프 정보가 대응하는 분담 엔진의 성능(가령, 분담 엔진에게 제어 블록이 보이는 데 일반적으로 걸리는 시간, 분담 엔진이 지시를 프로세싱하는 데 걸리는 시간, 및 분담 엔진이 프로세싱을 완료한 후 운영 체제가 결과 큐 내 제어 블록을 보는 데 걸리는 시간)의 통계적 이력을 제공한다.
도 5는 하나의 실시예에 따라, 제 1 컴퓨팅 환경(가령, MCP 운영 체제를 갖는 에뮬레이트된 컴퓨팅 환경) 및 제 2 컴퓨팅 환경으로부터 프로세싱 작업을 분담하기 위한 방법(100)의 순서도이다. 방법(100)이 시작하기 전에, 가령, 설정 정보(configuration information)가 프로세싱될 때, 또는 프로그램 에이전트를 통해, 외부 자극에 응답하여 제어 영역(36-38)이 할당된다. 제어 영역이 할당되면, 앞서 언급된 바와 같이, 분담 엔진(56-58)이 인스턴스화된다.
분담하는 방법(100)은 개시 큐에 대해 제어 블록을 할당하는 단계(102)를 포함한다. 컴퓨팅 수행 요청에 응답해, 제 1 컴퓨팅 환경 내 운영 체제가, 컴퓨팅 환경의 메모리 영역으로부터 제어 블록을 할당한다. 제어 블록의 할당은 정적이거나 동적일 수 있다. 일반적으로, 제어 블록은, 프로세싱을 위해 초기화되고 인큐잉될 수 있기 전에 할당되어야 한다. 덧붙이자면, 분담 엔진의 제어하에 있을 동안 제어 블록이 재할당되지 않아야 한다.
할당된 제어 블록의 데이터 구조가 초기화되고, 컴퓨팅 수행 요청과 연계된 임의의 데이터가 제어 블록과 연계된 데이터 버퍼 내로 위치된다. 버퍼의 크기 및 버퍼 내에 있는 데이터의 크기를 적절하게 반영하기 위해 제어 블록 제어 워드의 길이가 업데이트된다.
또한 분담 방법(100)은, 제어 블록을 개시 큐에 인큐잉하는 단계(104)를 더 포함한다. 제 1 컴퓨팅 환경의 대응하는 제어 영역 내에서, 제어 블록이 대응하는 결과 큐 또는 개시 큐로 인큐잉된다. 제어 블록을 개시 큐로 인큐잉하기 위해, 개시 큐 삽입 인덱스 워드(IQ IN)에 의해 인덱싱되는 큐 슬롯이, 인큐어에 의해, 가령, 제 1 컴퓨팅 환경의 운영 체제에 의해, 읽힌다. 개시 큐 삽입 인덱스 워드는, 다음번 제어 블록이 위치하는 개시 큐 내 슬롯을 가리키는 제어 영역 내 워드이다. 개시 큐 삽입 인덱스 워드의 값이 0이 아닌 경우, 개시 큐의 인덱스되는 슬롯이 차 있으며(full), 예를 들어 분담 엔진에 의해 개시 큐의 상기 인덱스되는 슬롯의 내용물이 제거되어서야 제어 블록이 큐에서 대기할 수 있다. 개시 큐의 인덱스되는 슬롯이 차 있는 경우, 예컨대, 반환되는 값이 0일 때까지, 개시 큐의 인덱스되는 슬롯이 폴링(poll)된다. 또는, 제어 블록이 결과 큐로부터 제거되었음을 확인하기 위해, 제어 블록이 결과 큐로부터 제거될 때 야기되는 하나 이상의 이벤트가 모니터링될 수 있다.
제어 블록이 큐에서 대기가 가능할 때, 현재 시점이 질의되고, 적절한 제어 블록 워드(가령, TS_IQ_IN 제어 블록 워드)가, 제어 블록이 개시 큐로 삽입된 때에 대한 적합하게 포맷팅된 타임스탬프 값으로 업데이트된다. 그 후, 제어 블록의 주소가, 개시 큐 삽입 인덱스 워드에 의해 인덱싱되는 개시 큐 슬롯에 써진다(write). 개시 큐 삽입 인덱스 워드의 새로운 값이, 큐 주소 워드가 가리키는(point to) 각각의 모든 큐의 워드 길이를 나타내는 큐 길이 워드(Q_LEN)의 값보다 크거나 같은 경우, 값이 0으로 설정된다. 이때, 제어 블록이 개시 큐에서 대기한다.
분담 방법(100)은 분담 엔진이 개시 큐에서 제어 블록을 디큐잉하는 단계(106)를 더 포함한다. 분담 엔진은 개시 큐 추출 인덱스 워드(IQ_OUT)에 의해 인덱싱되는 큐 슬롯에서 개시 큐를 폴링한다. 개시 큐 추출 인덱스 워드는, 다음번 제어 블록이 제거될 개시 큐 내 슬롯을 가리키는 제어 영역 내 워드이다. 0 아닌 값이 반환될 때, 분담 엔진은 인덱싱된 큐 슬롯 내 메모리 주소 또는 인덱싱된 큐 슬롯에 대응하는 메모리 주소를 읽는다. 또한 분담 엔진은 제어 블록의 마크 워드(Mark Word) 제어 워드 및 분담 엔진 버전 워드(Offload Engine Version Word) 제어 워드를 읽고 검증한다. 시각이 읽히고 적합하게 포맷팅되며, 적절한 제어 블록 워드(가령, TS_IQ_OUT 제어 블록 워드)가, 분담 엔진이 개시 큐에서 제어 블록을 디큐잉한 때에 대한 적합하게 포맷팅된 타임스탬프 값으로 업데이트된다.
그 후, 개시 큐 추출 인덱스 워드에 의해 인덱싱되는 큐 슬롯이 0이 되고, 개시 큐 추출 인덱스 워드(IQ_OUT) 워드가 증분한다. 개시 큐 추출 인덱스 워드의 새로운 값이 큐 길이 워드(Q_LEN)의 값보다 크거나 동일할 때, 값 0이 써진다. 이때, 분담 엔진이 제어 블록을 소유한다.
분담 방법(100)은 또한 분담 엔진이 제어 블록 컴퓨팅 요청을 수행하는 단계(108)를 포함한다. 분담 엔진이 개시 큐로부터 제어 블록을 디큐잉한 후, 분담 엔진은 제어 블록 컴퓨팅 요청을 수행할 수 있다. 분담 엔진이 지시(DIRECTIVE) 제어 블록 워드를 읽고, 요청된 동작을 수행한다. 분담 엔진은 분담 엔진이 제어 블록을 실행하는 방식에 있어서, 비교적 높은 유연성을 지닌다. 예를 들어, 분담 엔진은 제어 블록을 순차적으로, 또는 병렬로 실행할 수 있다. 또한, 분담 엔진은 무질서하게, 즉, 분담 엔진이 제어 블록을 디큐잉하는 순서가 아닌 순서로, 제어 블록을 실행하기로 선택할 수 있다. 일반적으로, 분담 엔진은 분담 엔진이 지시(DIRECTIVE) 제어 블록 워드를 수행하기 위해 필요하다고 추정되는 것은 무엇이든 할 수 있다.
분담 방법(100)은 제어 블록을 업데이트하는 단계(110)를 포함한다. 분담 엔진이 지시(DIRECTIVE) 제어 블록 워드의 수행을 완료하면, 분담 엔진은 결과(RESULT) 제어 블록 워드를 업데이트한다. 본원에서 앞서 언급된 바와 같이, 결과(RESULT) 제어 블록 워드는 실행의 결과를 나타내는 값을 가진다.
또한 분담 방법(100)은 제어 블록을 결과 큐로 인큐잉하는 단계(112)를 포함한다. 지시(DIRECTIVE) 제어 블록 워드가 완료되고, 분담 엔진이 결과(RESULT) 제어 블록 워드를 업데이트하면, 분담 엔진은 제어 블록을 결과 큐로 인큐잉하는 것을 진행한다. 분담 엔진이 결과 큐 삽입 인덱스 워드(RQ_IN)에 의해 인덱스되는 결과 큐의 큐 슬롯을 읽는다. 결과 큐 삽입 인덱스 워드는, 다음번 제어 블록이 위치하는 결과 큐 내 슬롯을 가리키는 제어 영역 내 워드이다. 인덱스되는 결과 큐 슬롯으로부터 읽힌 값이 0이 아닌 경우, 분담 엔진은, 제 1 컴퓨팅 환경의 운영 체제가 인덱스된 결과 큐 슬롯 위치에서 이미 대기 중인 제어 블록을 디큐잉하도록 기다려야 한다. 0 값이 읽힐 때까지 분담 엔진은 인덱스된 결과 큐 슬롯을 폴링한다.
분담 엔진이 제어 블록을 결과 큐에 인큐잉하도록 정해지면, 시각이 질의되고, 적절한 제어 블록 워드(가령, TS_RQ_IN 제어 블록 워드)가, 제어 블록이 결과 큐에 삽입된 때를 가리키도록 적합하게 포맷팅된 타임스탬프 값으로 업데이트된다. 그 후, 제어 블록이 주소가 결과 큐 삽입 인덱스 워드에 의해 인덱스되는 결과 큐 슬롯에 써지고, 결과 큐 삽입 인덱스 워드가 증분한다. 결과 큐 삽입 인덱스 워드의 최종 값이 큐 길이 워드의 값보다 크거나 같은 경우, 증분된 값을 대신해, 값 0이 결과 큐 삽입 인덱스 워드에 써진다.
또한 분담 방법(100)은 결과 큐에서 제어 블록을 디큐잉하는 단계(114)를 포함한다. 분담 엔진이 제어 블록을 결과 큐에 인큐잉하면, 제 1 컴퓨팅 환경의 운영 체제가 결과 큐에서 제어 블록을 디큐잉할 수 있다. 제 1 컴퓨팅 환경의 운영 체제가 0이 아닌 값을 읽을 때까지, 결과 큐 추출 인덱스 워드(RQ_OUT)에 의해 인덱싱되는 결과 큐 슬롯을 읽음으로써, 제 1 컴퓨팅 환경의 운영 체제가 결과 큐를 폴링한다. 결과 큐 추출 인덱스 워드는, 다음번 제어 블록이 제거될 결과 큐의 큐 슬롯을 가리키는 제어 영역의 워드이다. 결과 큐 추출 인덱스 워드에 의해 인덱싱되는 큐 슬롯에서 0이 아닌 값을 보면, 제 1 컴퓨팅 환경의 운영 체제는 시각을 질의하고, 적합하게 포맷팅된 타임스탬프를, 적절한 제어 블록 워드(가령, TS_RQ_OUT 제어 블록 워드)에 써서, 이 제어 블록이 결과 큐로부터 제거된 때를 기록한다.
그 후, 인덱싱된 큐 슬롯 내에 있는, 또는 인덱싱된 큐 슬롯에 대응하는 제어 블록 메모리 주소가 읽힌다.
제어 블록 메모리 주소가 인덱싱된 큐 슬롯으로부터 읽힌 후, 제 1 컴퓨팅 환경의 운영 체제가 값 0을 인덱싱된 큐 슬롯에 써서, 결과 큐의 큐 슬롯이 현재 비어 있음을 나타낸다. 그 후, 결과 큐 추출 인덱스 워드가 증분된다. 결과 큐 추출 인덱스 워드의 최종 값이 큐 길이 워드의 값보다 크거나 같을 경우, 증분된 값 대신, 0 값이 결과 큐 추출 인덱스 워드에 써진다.
제 1 컴퓨팅 환경의 운영 체제는, 제어 블록 완료 프로세싱이 필요로 하는 것은 무엇이든 자유롭게 한다. 이러한 프로세싱은 특정 대응하는 분담 엔진을 위한 제어 블록과 연계된 에러 로깅(error logging), 통계적 수집(statistic gathering), 버퍼 반환(buffer deallocation), 및 임의의 개수의 정화(cleanup) 작업을 포함할 수 있다.
도 6은 또 다른 실시예에 따라, 제 1 컴퓨팅 환경에서 제 2 컴퓨팅 환경으로 프로세싱 작업을 분담하기 위한 방법(120)의 순서도이다. 예를 들어, 방법(120)은 제 1 컴퓨팅 환경의 운영 체제의 운영 체제 서비스 요청을 갖는 제어 블록을 분담하는 단계를 포함한다. 이러한 분담 동작은 적절한 제어 블록 제어 영역 내 풀 큐 및 이에 대응하는 분담 엔진을 이용한다. 통상의 운영 체제 서비스 요청은 (분담 엔진에 의한) 추가 데이터 요청, (가령, 큐의 크기를 동적으로 증가시키기 위한) 분담 엔진 자원의 확장의 요청, 및 비-네이티브 운영 체제(24)로부터의 다양한 네트워크 서비스의 요청을 포함할 수 있다.
분담 방법(120)은 풀 큐에 대해 하나 이상의 제어 블록을 사전-할당(pre-allocating)하는 단계(122)를 포함한다. 풀 큐는 목적과 관련하여 그 밖의 다른 큐와 약간 상이하다. 제 1 컴퓨팅 환경의 운영 체제의 서비스를 요청하는 분담 엔진과 관련해, 분담 엔진은 제어 블록 없이 이러한 운영 체제 서비스를 요청할 수 없다.
따라서, 제 1 컴퓨팅 환경의 운영 체제의 서비스를 요청하기 위해, 제 1 컴퓨팅 환경의 운영 체제는 하나 이상의 제어 블록을 대응하는 분담 엔진에게 특정하게 사전-할당할 수 있다.
분담 방법(120)은 제어 블록을 풀 큐로 인큐잉하는 단계(124)를 포함한다. 제어 블록이 풀 큐로 적합한 방식으로(가령, 앞서 언급된 바 있는, 제어 블록을 개시 큐로 인큐잉하는 것과 유사한 방식으로) 인큐잉된다. 예를 들어, 제어 블록을 풀 큐로 인큐잉하기 위해, 풀 큐 삽입 인덱스 워드(PQ_IN)에 의해 인덱스되는 큐 슬롯이, 인큐어, 가령, 분담 엔진에 의해 읽힌다. 풀 큐 삽입 인덱스 워드는, 다음번 제어 블록이 위치할 풀 큐의 슬롯을 가리키는 제어 영역 내 워드이다. 인덱스된 슬롯이 차 있지 않아서 큐-대기될 수 있는 경우, 현재 시각이 질의되고, 적절한 제어 블록 워드(가령, TS_PQ_IN 제어 블록 워드)가, 제어 블록이 풀 큐로 삽입된 때에 대한 적합하게 포맷팅된 타임스탬프 값으로 업데이트된다. 그 후, 제어 블록의 주소가 풀 큐 삽입 인덱스 워드에 의해 인덱스되는 풀 큐 슬롯에 써진다. 그 후, 풀 큐 삽입 인덱스 워드의 값이 증분되고, 풀 큐 삽입 인덱스 워드의 새로운 값이 큐 길이 워드의 값보다 크거나 같은 경우, 값은 0으로 설정된다. 이때, 제어 블록이 풀 큐 내에서 큐 대기한다.
분담 엔진이 제 1 컴퓨팅 환경의 운영 체제로부터 운영 체제 서비스를 요청하기를 원할 때, 분담 엔진이 풀 큐로부터 제어 블록을 디큐잉하고(단계(126)), 제어 블록을 인큐잉하기 위해 필요할 때 적절한 필드를 채우며(단계(128)), 가령, 앞서 언급된 바와 같이 분담 엔진에 의한 개시 큐 내 제어 블록의 처리와 유사한 방식으로, 운영 체제 서비스 개시 큐에 제어 블록을 인큐잉한다(단계(132))
분담 방법(120)은 운영 체제 서비스 개시 큐로부터 제어 블록을 디큐잉하는 단계(134)를 포함한다. 제 1 컴퓨팅 환경의 운영 체제가 서비스 큐 추출 인덱스 워드(MIQ_OUT)에 의해 인덱싱되는 슬롯에서 운영 체제 서비스 개시 큐를 폴링한다. 서비스 큐 추출 인덱스 워드는, 다음번 제어 블록이 제거될 운영 체제 서비스 개시 큐 내 슬롯을 가리키는 제어 영역 내 워드이다. 서비스 개시 큐 삽입 추출 워드(가령, MIQ_OUT 제어 블록 제어 워드)가 가리키는 큐 슬롯에서 운영 체제 서비스 개시 큐의 베이스의 절대 주소(가령, MI_Q 제어 블록 워드)를 포함하는 제어 영역의 일부분에서 유효한 제어 블록 주소를 보면, 제 1 컴퓨팅 환경의 운영 체제가 제어 블록을 디큐잉한다.
분담 방법(120)은 운영 체제가 제어 블록 운영 체제 서비스 요청을 수행하는 단계(136)를 포함한다. 운영 체제가 운영 체제 서비스 개시 큐로부터 제어 블록을 디큐잉한 후, 지시(DIRECTIVE) 제어 블록 워드를 읽고, 요청된 서비스를 수행함으로써, 분담 엔진이 제어 블록 운영 체제 서비스 요청을 수행할 수 있다.
분담 방법(120)이 제어 블록을 운영 체제 서비스 결과 큐로 인큐잉하는 단계(138)를 포함한다. 더 구체적으로, 서비스 결과 큐 삽입 인덱스 워드(가령, MRQ_IN 제어 블록 워드)가 가리키는 큐 슬롯에서 운영 체제가 제어 블록을, 운영 체제 서비스 결과 큐의 베이스의 절대 주소(가령, MR_Q 제어 블록 워드)를 포함하는 제어 영역의 일부분으로 인큐잉한다.
분담 방법(120)은 운영 체제 서비스 결과 큐로부터 제어 블록을 디큐잉하는 단계(142)를 포함한다. 더 구체적으로, 분담 엔진이 운영 체제 서비스 결과 큐 내 항목을 보면, 제어 블록을 디큐잉하고, 제어 블록의 프로세싱 동안 어떠한 에러라도 발생했는지 여부를 알기 위해 결과(RESULT) 제어 블록 워드를 검사할 것이다. 임의의 프로세싱 오류가 있는 경우, 분담 엔진이 적절한 동작을 취할 수 있다. 일반적으로, 결과(RESULT) 제어 블록 워드의 0 값이 실행 중 어떠한 에러도 없음을 의미한다.
도 5-6에 도시된 방법은 일반적으로 다목적 또는 단일 목적 프로세서로 구현될 수 있다. 이러한 프로세서는 프로세스를 수행하기 위해 어셈블리로, 또는 컴파일되어, 또는 기계-레벨에서 명령을 실행할 것이다. 이들 명령은, 도 5-6의 설명에 따라, 해당업계 종사자에 의해 써지고, 컴퓨터 판독형 매체에 저장 또는 전송될 수 있다. 또한 소스 코드나 그 밖의 다른 임의의 알려진 컴퓨터 보조 설계 툴을 이용해 명령이 생성될 수 있다. 컴퓨터 판독형 매체는 이들 명령이 저장될 수 있는 임의의 매체일 수 있으며, 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), 플래시 메모리, 리드 온리 메모리(ROM), 컴팩트 디스크 ROM(CD-ROM), 디지털 비디오 디스크(DVD), 자기 디스크 또는 테이프, 광학 디스크 또는 그 밖의 다른 디스크, 실리콘 메모리(가령, 이동식 메모리, 비-이동식 메모리, 휘발성 메모리, 또는 비-휘발성 메모리) 등을 포함한다.
해당업계 종사자라면, 첨부된 특허청구범위 및 그 동등물에 의해 정의되는 본 발명의 사상과 범위 내에서, 본원에 기재된 실시예의 다양한 변형과 치환이 이뤄질 수 있음을 알 것이다.

Claims (11)

  1. 제 2 컴퓨팅 환경에 의해 제 1 컴퓨팅 환경으로부터 운영 체제 서비스를 요청하기 위한 방법에 있어서, 상기 제 1 컴퓨팅 환경은 운영 체제와, 풀 큐(pool queue)와 운영 체제 서비스 큐가 있는 적어도 하나의 제어 영역을 갖는 메모리 요소를 포함하고, 상기 운영 체제 서비스 큐는 운영 체제 서비스 개시 큐(operating system service initiation queue)와 운영 체제 서비스 결과 큐(operating system service result queue)를 포함하고, 제 2 컴퓨팅 환경은 제어 영역에 대응하는 하나 이상의 분담 엔진(offload engine)을 포함하고, 상기 방법은
    제 1 컴퓨팅 환경의 운영 체제에 의해, 제어 블록(control block)을 할당하는 단계로서, 제 1 컴퓨팅 환경의 운영 체제 및 대응하는 분담 엔진에 의해 제어 영역이 액세스 가능하도록 메모리 요소가 구성되는 특징의, 제어 블록 할당 단계,
    제 1 컴퓨팅 환경의 운영 체제에 의해 제어 블록을 풀 큐의 가용 슬롯으로 인큐잉(enqueue)하는 단계로서, 제 2 컴퓨팅 환경의 분담 엔진이 제어 블록을 풀 큐로부터 디큐잉(dequeue)하고, 디큐잉된 제어 블록을, 제 1 컴퓨팅 환경의 운영 체제로부터의 운영 체제 서비스 요청으로 업데이트하는 방식으로 상기 제어 블록은 풀 큐로 인큐잉되며, 분담 엔진이 업데이트된 제어 블록을 운영 체제 서비스 개시 큐의 가용 슬롯으로 인큐잉할 수 있도록 운영 체제 서비스 큐가 구성되는 특징의, 제어 블록 풀 큐 인큐잉 단계,
    제 1 컴퓨팅 환경의 운영 체제에 의해, 업데이트되고 인큐잉된 제어 블록을 운영 체제 서비스 개시 큐로부터 디큐잉하는 특징의, 제어 블록 운영 체제 서비스 큐 디큐잉 단계,
    제 1 컴퓨팅 환경의 운영 체제에 의해, 디큐잉되는 제어 블록의 요청된 운영 체제 서비스를 수행하는 특징의, 운영 체제 수행 단계,
    제 1 컴퓨팅 환경의 운영 체제에 의해 운영 체제 서비스 결과 큐의 결과 큐 부분으로 제어 블록을 인큐잉하는 단계로서, 분담 엔진이 제어 블록을 운영 체제 서비스 결과 큐로부터 디큐잉할 수 있는 방식으로 상기 제어 블록이 운영 체제 서비스 결과 큐로 인큐잉되는 특징의, 제어 블록 운영 체제 서비스 큐 인큐잉 단계
    를 포함하는 것을 특징으로 하는 운영 체제 서비스를 요청하기 위한 방법.
  2. 제 1 항에 있어서, 제어 블록 풀 큐 인큐잉 단계는,
    풀 큐 삽입 인덱스 워드(PQ_IN)에 의해 인덱싱되는, 풀 큐의 슬롯을 읽는 단계,
    풀 큐의 인덱싱되는 슬롯의 값이 0이 아닌 경우, 풀 큐의 인덱싱되는 슬롯의 값이 0이 될 때까지, 풀 큐의 인덱싱되는 슬롯을 폴링(polling)하는 단계,
    풀 큐의 인덱싱되는 슬롯의 값이 0인 경우, 제어 블록의 주소를 상기 풀 큐의 인덱싱되는 슬롯으로 쓰는 단계, 및
    풀 큐 삽입 인덱스 워드를 증분하는 단계
    를 포함하는 것을 특징으로 하는 운영 체제 서비스를 요청하기 위한 방법.
  3. 제 1 항에 있어서, 상기 방법은 분담 엔진이 인큐잉된 제어 블록을 운영 체제 서비스 결과 큐로부터 디큐잉하는 단계를 포함하는 것을 특징으로 하는 운영 체제 서비스를 요청하기 위한 방법.
  4. 제 3 항에 있어서, 상기 제어 블록은 결과(RESULT) 제어 블록 워드를 포함하고, 제어 블록 운영 체제 서비스 큐 디큐잉 단계는, 운영 체제 서비스 요청이 임의의 프로세싱 에러를 갖고 완료됐음을 나타내기 위한 제어 블록의 결과(RESULT) 제어 블록 워드를 검사하는 단계를 포함하는 것을 특징으로 하는 운영 체제 서비스를 요청하기 위한 방법.
  5. 제 1 항에 있어서, 제어 블록 운영 체제 서비스 큐 디큐잉 단계는
    제 1 컴퓨팅 환경의 운영 체제가 서비스 큐 추출 인덱스 워드(MIQ_OUT)에 의해 인덱싱되는, 운영 체제 서비스 개시 큐의 슬롯을 읽는 단계,
    운영 체제 서비스 개시 큐의 인덱싱되는 슬롯의 값이 0인 경우, 제 1 컴퓨팅 환경의 운영 체제 분담 엔진에 의해, 운영 체제 서비스 개시 큐의 인덱싱되는 슬롯의 값이 0이 아닐 때까지, 상기 운영 체제 서비스 개시 큐의 인덱싱되는 슬롯을 폴링(polling)하는 단계,
    운영 체제 서비스 개시 큐의 인덱싱되는 슬롯의 값이 0이 아닌 경우, 제 1 컴퓨팅 환경의 운영 체제에 의해, 상기 운영 체제 서비스 개시 큐의 인덱싱되는 슬롯 내 메모리 주소 값을 읽는 단계,
    상기 운영 체제 서비스 개시 큐의 인덱싱되는 슬롯으로 값 0을 쓰는 단계, 및
    서비스 큐 추출 인덱스 워드를 증분하는 단계
    를 포함하는 것을 특징으로 하는 운영 체제 서비스를 요청하기 위한 방법.
  6. 제 1 항에 있어서, 제어 블록은 제어 블록 운영 체제 서비스 요청의 실행을 위한 지시(DIRECTIVE) 제어 블록 워드를 포함하며, 운영 체제 수행 단계는 운영 체제가 지시(DIRECTIVE) 제어 블록 워드를 읽고, 지시(DIRECTIVE) 제어 블록 워드에 의해 식별되는 운영 체세 서비스를 수행하는 단계를 포함하는 것을 특징으로 하는 운영 체제 서비스를 요청하기 위한 방법.
  7. 제 1 항에 있어서, 제어 블록 운영 체제 서비스 큐 인큐잉 단계는,
    제 1 컴퓨팅 환경의 운영 체제가, 서비스 결과 큐 삽입 워드 인덱스(MRQ_IN)에 의해 인덱싱되는, 운영 체제 서비스 결과 큐의 슬롯을 읽는 단계,
    상기 운영 체제 서비스 결과 큐의 인덱싱된 슬롯의 값이 0이 아닌 경우, 제 1 컴퓨팅 환경의 운영 체제에 의해, 상기 운영 체제 서비스 결과 큐의 인덱싱된 슬롯의 값이 0일 때까지, 상기 운영 체제 서비스 결과 큐의 인덱싱된 슬롯을 폴링(polling)하는 단계,
    상기 운영 체제 서비스 결과 큐의 인덱싱된 슬롯의 값이 0인 경우, 운영 체제에 의해, 제어 블록의 주소를, 상기 운영 체제 서비스 결과 큐의 인덱싱된 슬롯으로 쓰는 단계, 및
    운영 체제 서비스 결과 큐 삽입 인덱스 워드를 증분하는 단계
    를 포함하는 것을 특징으로 하는 운영 체제 서비스를 요청하기 위한 방법.
  8. 제 1 항에 있어서, 적어도 하나의 인큐잉 단계 및 적어도 하나의 디큐잉 단계 중 적어도 하나의 단계가, 제어 블록이 대응하는 큐로부터 디큐잉될 때를 타임스탬핑(timestamping)하는 단계를 포함하는 것을 특징으로 하는 운영 체제 서비스를 요청하기 위한 방법.
  9. 제 1 항에 있어서, 제 1 컴퓨팅 환경과 제 2 컴퓨팅 환경 간의 인터페이스를 통해, 상기 제 1 컴퓨팅 환경은 제 2 컴퓨팅 환경으로 연결되는 것을 특징으로 하는 운영 체제 서비스를 요청하기 위한 방법.
  10. 제 1 항에 있어서, 제 2 컴퓨팅 환경은 운영 체제를 포함하고, 제 1 컴퓨팅 환경은, 상기 제 2 컴퓨팅 환경의 운영 체제 내에서 실행되는 에뮬레이트된 컴퓨팅 환경 애플리케이션인 것을 특징으로 하는 운영 체제 서비스를 요청하기 위한 방법.
  11. 제 1 항에 있어서, 제 1 컴퓨팅 환경은 MCP(Master Control Program) 환경을 포함하고, 제 1 컴퓨팅 환경의 운영 체제는 MCP 운영 체제인 것을 특징으로 하는 운영 체제 서비스를 요청하기 위한 방법.
KR1020127016698A 2009-12-21 2010-12-20 외래 컴퓨팅 환경으로 프로세싱 작업을 분담하기 위한 방법 및 시스템 KR20120115285A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/643,106 2009-12-21
US12/643,106 US8161494B2 (en) 2009-12-21 2009-12-21 Method and system for offloading processing tasks to a foreign computing environment

Publications (1)

Publication Number Publication Date
KR20120115285A true KR20120115285A (ko) 2012-10-17

Family

ID=44153042

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127016698A KR20120115285A (ko) 2009-12-21 2010-12-20 외래 컴퓨팅 환경으로 프로세싱 작업을 분담하기 위한 방법 및 시스템

Country Status (6)

Country Link
US (1) US8161494B2 (ko)
EP (1) EP2517120A2 (ko)
KR (1) KR20120115285A (ko)
AU (1) AU2010339765B2 (ko)
CA (1) CA2785221A1 (ko)
WO (1) WO2011084745A2 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005089239A2 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method of providing a self-optimizing reservation in space of compute resources
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
WO2006053093A2 (en) 2004-11-08 2006-05-18 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
ES2614751T3 (es) 2005-04-07 2017-06-01 Iii Holdings 12, Llc Acceso bajo demanda a recursos informáticos
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
KR20120072134A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 가상 데스크톱 가속 장치 및 방법
US20130132061A1 (en) * 2011-11-18 2013-05-23 Michael J. Rieschl Just-in-time static translation system for emulated computing environments
US20130262820A1 (en) * 2012-03-28 2013-10-03 Michael J. Rieschl Event logger for just-in-time static translation system
US9110661B2 (en) * 2012-12-28 2015-08-18 International Business Machines Corporation Mobile device offloading task to a peer device and receiving a completed task when energy level is below a threshold level
US11132277B2 (en) * 2012-12-28 2021-09-28 Iii Holdings 2, Llc System and method for continuous low-overhead monitoring of distributed applications running on a cluster of data processing nodes
US9571414B2 (en) 2014-06-27 2017-02-14 Amazon Technologies, Inc. Multi-tiered processing using a distributed strict queue
US9128779B1 (en) * 2014-07-31 2015-09-08 Splunk Inc. Distributed tasks for retrieving supplemental job information
US9577972B1 (en) * 2014-09-09 2017-02-21 Amazon Technologies, Inc. Message inspection in a distributed strict queue
US20170161114A1 (en) * 2015-12-08 2017-06-08 Advanced Micro Devices, Inc. Method and apparatus for time-based scheduling of tasks
US11366810B2 (en) * 2020-04-27 2022-06-21 Salesforce.Com, Inc. Index contention under high concurrency in a database system
WO2022261249A1 (en) * 2021-06-09 2022-12-15 Splunk Inc. Distributed task assignment, distributed alerts and supression management, and artifact life tracking storage in a cluster computing system
WO2023184323A1 (en) * 2022-03-31 2023-10-05 Intel Corporation A concept for providing access to persistent memory

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040049580A1 (en) * 2002-09-05 2004-03-11 International Business Machines Corporation Receive queue device with efficient queue flow control, segment placement and virtualization mechanisms
US7299266B2 (en) * 2002-09-05 2007-11-20 International Business Machines Corporation Memory management offload for RDMA enabled network adapters
US7581229B2 (en) * 2005-03-11 2009-08-25 Microsoft Corporation Systems and methods for supporting device access from multiple operating systems
US20080010290A1 (en) * 2006-06-23 2008-01-10 Lecrone Douglas E Application offload processing
US20080155224A1 (en) * 2006-12-21 2008-06-26 Unisys Corporation System and method for performing input/output operations on a data processing platform that supports multiple memory page sizes
US20080155246A1 (en) * 2006-12-21 2008-06-26 Unisys Corporation System and method for synchronizing memory management functions of two disparate operating systems
US7966039B2 (en) * 2007-02-02 2011-06-21 Microsoft Corporation Bidirectional dynamic offloading of tasks between a host and a mobile device
US8875114B2 (en) * 2007-09-21 2014-10-28 International Business Machines Corporation Employing identifiers provided by an operating system of a processing environment to optimize the processing environment

Also Published As

Publication number Publication date
EP2517120A2 (en) 2012-10-31
AU2010339765B2 (en) 2016-06-02
WO2011084745A3 (en) 2011-10-20
CA2785221A1 (en) 2011-07-14
WO2011084745A2 (en) 2011-07-14
US20110154371A1 (en) 2011-06-23
US8161494B2 (en) 2012-04-17
AU2010339765A1 (en) 2012-07-19

Similar Documents

Publication Publication Date Title
US8161494B2 (en) Method and system for offloading processing tasks to a foreign computing environment
KR20120109527A (ko) 외래 컴퓨팅 환경으로 프로세싱 작업을 분담하기 위한 방법 및 시스템
CA2501876C (en) Startup and control of graph-based computation
US7103745B2 (en) Two-level operating system architecture
EP1734444A2 (en) Exchanging data between a guest operating system and a control operating system via memory mapped I/O
US20090100249A1 (en) Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core
CN106569891B (zh) 一种存储系统中任务调度执行的方法和装置
US20060020940A1 (en) Soft-partitioning systems and methods
US20080209168A1 (en) Information Processing Apparatus, Process Control Method, and Computer Program
KR101150661B1 (ko) 정보 처리 장치 및 메모리 영역 관리 방법
US5392409A (en) I/O execution method for a virtual machine system and system therefor
US20090276205A1 (en) Stablizing operation of an emulated system
US20090094310A1 (en) Parallel computing system and parallel computing method
US6895583B1 (en) Task control block for a computing environment
US20240036921A1 (en) Cascading of Graph Streaming Processors
CN108958903B (zh) 嵌入式多核中央处理器任务调度方法与装置
US20220138027A1 (en) Method for transmitting a message in a computing system, and computing system
US20070143436A1 (en) Method, apparatus and program storage device for providing light weight system calls to improve user mode performance
CN108958905B (zh) 嵌入式多核中央处理器的轻量级操作系统
CN108958904B (zh) 嵌入式多核中央处理器的轻量级操作系统的驱动程序框架
Hansen The solo operating system: Processes, monitors, and classes
JPWO2018173300A1 (ja) I/o制御方法およびi/o制御システム
US20210049030A1 (en) Graphics processing unit profiling tool virtualization
KR20220083812A (ko) 선택 불가능한 스케줄러 큐 이후의 레지스터 재명명
Hansen The Solo operating system: processes, monitors and classes

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid