KR101414033B1 - 동적인 연산 할당 - Google Patents

동적인 연산 할당 Download PDF

Info

Publication number
KR101414033B1
KR101414033B1 KR1020127003552A KR20127003552A KR101414033B1 KR 101414033 B1 KR101414033 B1 KR 101414033B1 KR 1020127003552 A KR1020127003552 A KR 1020127003552A KR 20127003552 A KR20127003552 A KR 20127003552A KR 101414033 B1 KR101414033 B1 KR 101414033B1
Authority
KR
South Korea
Prior art keywords
client
server
factor
allocation
battery life
Prior art date
Application number
KR1020127003552A
Other languages
English (en)
Other versions
KR20120036360A (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 KR20120036360A publication Critical patent/KR20120036360A/ko
Application granted granted Critical
Publication of KR101414033B1 publication Critical patent/KR101414033B1/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/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/5044Allocation 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 hardware capabilities
    • 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]
    • 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
    • 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)
  • Mobile Radio Communication Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)

Abstract

본 개시는 동적인 연산 할당을 위한 방법 및 시스템에 관한 것이다. 일 예에서, 동적인 연산 할당을 위한 방법은, 성능 특성에 관한 적어도 하나의 인자의 현재 값을 결정하는 단계를 포함한다. 다양한 실시형태에서, 상기 인자는 접속성, 데이터 품질 혹은 잔여 배터리 수명일 수 있다. 그리고 본 방법은 상기 인자에 대한 미리 정해진 값에 대하여 상기 결정된 값을 비교하는 단계 및 상기 비교에 기초하여 상기 클라이언트와 상기 서버 간에 연산을 할당하는 단계를 포함한다.

Description

동적인 연산 할당{DYNAMIC COMPUTATION ALLOCATION}
서버/클라이언트 시스템에서, 서버와 클라이언트 각각은 연산(computation) 및 렌더링(rendering) 기능을 가질 수 있다. 그러나, 임의의 주어진 어플리케이션에 대하여, 연산 및 렌더링은 통상적으로 서버에 의해 또는 클라이언트에 의해 전적으로 수행되며, 연산이 서버에 의하여 수행될지 클라이언트에 의하여 수행될지 여부의 결정은 정적(static)이다. 연산이 서버에서 수행되는 신 클라이언트(thin client) 시스템에서, 비록 높은 접속성의 시간이 증가된 연산과 렌더링 성능을 제공할 수 있지만, 낮은 접속성의 시간 동안 클라이언트는 느린 성능을 탐지할 것이다. 연산이 클라이언트에서 수행되는 팻 클라이언트(fat client) 시스템에서, 클라이언트는 더 낮은 품질의 연산과 렌더링에 제한될 수 있다.
본 개시는 일반적으로 동적인 연산 할당을 위한 시스템 및 방법에 관련된다. 기술되는 시스템은 통상적으로 연산 능력을 갖춘 프로세서를 가진 서버, 그 서버와 통신하고 연산 능력을 갖춘 프로세서를 가진 클라이언트, 및 성능 특성(performance characteristic)에 관한 적어도 하나의 인자(factor)의 현재 레벨에 기초하여 클라이언트와 서버 간에 연산을 할당하기 위한 할당 로직(allocation logic)을 포함한다.
일부 예시적인 시스템에서, 클라이언트는 휴대용 통신 장치일 수 있다. 일부 예시적인 시스템에서, 할당 로직은 서버의 프로세서 상에서 구동되거나 클라이언트의 프로세서 상에서 구동될 수 있다. 다른 예시적인 시스템에서, 적어도 하나의 인자는 접속성 레벨(connectivity level), 데이터 품질 혹은 잔여 배터리 수명 중 하나일 수 있다.
또한, 본 개시는 일반적으로 동적인 연산 할당을 위한 방법에 관련된다. 기술되는 방법은 성능 특성에 관한 적어도 하나의 인자의 현재 값을 결정하는 단계를 포함할 수 있다. 인자는 예컨대 접속성, 데이터 품질 혹은 잔여 배터리 수명일 수 있다. 이후 본 방법은 상기 인자에 대한 미리 정해진 값에 대해 결정된 값을 비교하는 단계 및 비교에 기초하여 서버와 클라이언트 간에 연산을 할당하는 단계를 포함한다.
일부 예시적인 방법에서, 인자는 연결성 레벨에 관련되며, 연결성 레벨에 대해 결정된 값이 미리 정해진 임계값보다 열위인 경우, 연산은 클라이언트에 할당된다. 다른 예시적인 방법에서, 인자는 데이터 품질에 관련되며, 데이터 품질에 대해 결정된 값이 미리 정해진 임계값보다 열위인 경우, 연산은 서버에 할당된다. 또 다른 예시적인 방법에서, 인자는 잔여 배터리 수명에 관련되며, 배터리 수명에 대해 결정된 값이 미리 정해진 임계값보다 열위인 경우, 연산은 서버에 할당된다. 추가적인 예시적인 방법에서, 제2 인자의 현재 값이 결정될 수 있고, 제2 인자에 대한 미리 정해진 임계값과 결정된 값이 비교될 수 있고, 제2 인자의 비교에 기초하여 연산이 할당될 수 있으며, 제2 인자에 기초한 할당은 제1 인자에 기초한 할당보다 우선(override)한다. 이 다양한 예에서, 제1 인자는 연결성일 수 있고, 제2 인자는 연산된 값의 품질일 수 있거나, 제1 인자는 연결성일 수 있고, 제2 인자는 잔여 배터리 수명일 수 있다. 다른 예에서, 본 방법은 희망하는(desired) 연산을 결정하는 단계를 포함할 수 있고, 희망하는 연산을 할당하기 위하여 할당이 수행될 수 있다. 일부 예에서, 할당은 계속해서(continually) 이루어질 수 있다.
또한, 본 개시는 일반적으로, 동적인 연산 할당을 위한 절차를 수행하기 위한 컴퓨터로 실행 가능한 명령을 저장하고 있는 컴퓨터로 액세스 가능한 매체에 관련된다. 기술되는 절차는, 성능 특성에 관한 적어도 하나의 인자에 대한 현재 값을 결정하는 단계, 인자에 대한 미리 정해진 임계값과 결정된 값을 비교하는 단계 및 비교에 기초하여 클라이언트와 서버 간에 연산을 할당하는 단계를 포함한다.
일부 추가적인 예에서, 인자는 연결성 레벨, 데이터 품질 혹은 잔여 배터리 수명 중 하나일 수 있다. 또 다른 예에서, 절차는, 제2 인자의 현재 값을 결정하는 단계, 제2 인자에 대한 미리 정해진 임계값과 결정된 값을 비교하는 단계 및 제2 인자의 비교에 기초하여 연산을 할당하는 단계를 포함할 수 있으며, 제2 인자에 기초한 할당은 제1 인자에 기초한 할당보다 우선할 수 있다.
전술한 것은 개요이며, 따라서 필요에 따라 단순화, 일반화 및 세부사항들의 생략을 포함하며, 결과적으로 당업자라면 본 개요가 단지 예시적이고, 어떤 방식으로도 제한하려는 의도가 아니라는 점을 이해할 것이다. 본 장치 및/또는 프로세스 및/또는 여기에 기술된 다른 대상의 기타 측면, 특징 및 이점들은 여기에 제시된 교시에서 명백해질 것이다. 본 개요는 이하 상세한 설명에 추가적으로 기술된 간단한 형태의 개념들에 대한 선택을 도입하도록 제공된다. 이 개요는 청구된 대상의 핵심적인 특징이나 본질적인 특징을 확인하려는 의도가 아니며, 청구된 대상의 범위를 결정하는데 있어서 도움으로 사용하려는 의도도 아니다.
본 개시의 전술한 그리고 다른 특징들은 첨부도면과 함께 이루어진 이하의 설명 및 첨부된 청구항으로부터 더욱 충분하게 명백해질 것이다. 이들 도면이 본 개시에 따른 몇 가지 실시형태만을 묘사하고 그에 따라 그 범위의 제한으로 고려되지 않아야 함을 이해하고, 본 개시는 첨부도면의 사용을 통해 더 구체적으로 자세히 기술될 것이다.
도 1은 일부 실시형태에 따른 동적인 연산 할당을 위한 기본적인 방법의 순서도이다.
도 2a는 일부 실시형태에 따라 여기에 기술된 방법의 일부가 실행될 수 있는 예시적인 연산 환경의 개략도를 나타낸다.
도 2b는 일부 실시형태에 따라 여기에 기술된 방법과 함께 사용하기에 적합한 예시적인 클라이언트-서버 시스템의 개략도를 나타낸다.
도 3은 일부 실시형태에 따른 동적인 연산 할당을 위한 시스템의 개략도이다.
도 4는 일부 실시형태에 따른 동적인 연산 할당을 위한 방법의 순서도이다.
도 5는 일부 실시형태에 따른 동적인 연산 할당을 위한 방법의 순서도이다.
도 6은 일부 실시형태에 따른 동적인 연산 할당에 적합한 시스템도이다.
이하의 상세한 설명에서, 여기의 일부를 구성하는 첨부도면을 참조한다. 도면에 있어서, 통상적으로 유사한 기호는 문맥에서 달리 기술하지 않는 한 유사한 컴포넌트를 식별한다. 상세한 설명, 도면 및 청구항에서 기술된 예시적인 실시형태는 한정적인 것임을 의미하지 않는다. 여기에 제시된 대상의 사상이나 범위를 벗어나지 않으면서도 다른 실시형태를 이용할 수 있으며, 다른 변경이 이루어질 수 있다. 여기에 일반적으로 기술하고 도면에 도시한 바와 같이, 본 개시의 측면들은 광범위하고 상이한 구성들로 배열되고, 대체되고, 결합되고, 분리되고, 설계될 수 있으며, 이 전부는 여기에 명시적으로 고려된다는 점을 쉽게 이해할 것이다.
본 개시는 그 중에서도 동적인 연산 할당에 관한 방법, 장치, 컴퓨터 프로그램 및 시스템에 대한 것이다. 다양한 실시형태는 클라이언트와 서버, 데스크탑과 휴대 장치, 변화하는 접속성 레벨을 갖는 2개의 장치 혹은 변화하는 성능 특성의 레벨을 갖는 2개의 장치를 포함하는 임의의 2개의 장치 간 동적인 연산 할당에 대해서 적용 가능하다. 단지 예시적인 목적을 위하여, 여기에서의 논의는 클라이언트/서버 환경에 특히 초점을 맞출 것이다.
클라이언트-서버 시스템에서, 연산은 클라이언트에서 혹은 서버에서 수행될 수 있다. 연산은 임의의 유형의 정보 처리를 일반적으로 지칭하도록 의도된다. 연산은 예컨대 게임 렌더링을 포함하도록 의도된다. 렌더링은 2D 혹은 3D 그래픽의 이미징(imaging)을 포함하도록 의도된다. 게임의 경우, 렌더링은 종종 실시간으로 수행된다. 이미지는 서버에서 렌더링되어 클라이언트에 다운로드되거나 클라이언트에서 렌더링될 수 있다. 가장 일반적으로, 서버에서 렌더링되는 경우 이미지는 더 높은 품질이지만 낮은 접속성 환경에서 다운로드하기 위한 시간이 클 수 있다. 이미지 다운로드를 위한 상대적인 시간은 클라이언트 장치의 접속 속도 및 이미지와 연관된 데이터 파일의 사이즈의 함수일 수 있다. 반면에, 클라이언트에서 렌더링되는 경우, 이미지는 낮은 품질일 수 있지만 그 이미지를 얻기 위한 시간은 적을 수 있다.
여기에 개시된 다양한 예에 따르면, 연산은 클라이언트에서 혹은 서버에서 수행될 수 있으며, 클라이언트나 서버에서 연산을 해야하는지 여부에 대한 동적인 결정이 이루어진다. 이러한 결정은 몇몇 인자들에 기초할 수 있다. 나아가, 결정이 이루어진 후, 만약 해당 결정을 하는데 사용된 인자들의 값이 변한다면, 새로운 결정이 동적으로 이루어질 수 있다. 동적인 연산 할당에서 고려될 수 있는 3개의 인자로는 모바일 장치의 접속 속도, 모바일 장치의 잔여 배터리 수명 및 이미지의 경우에 해당 이미지의 수용 가능한 품질이 포함된다. 이들 인자는 단지 예시적으로 의도된 것이며, 한정하려는 의도가 아니다.
그에 따라, 도 1은 동적인 연산 할당을 위한 기본적인 방법(10)을 나타낸다. 나타낸 바와 같이, 필요한 연산이 결정된다[블록 12]. 이 연산은 예컨대 특정한 이미지의 렌더링일 수 있다. 적어도 하나의 인자의 값이 미리 정해진 임계값에 대하여 평가된다[블록 14]. 연산의 할당은 인자의 값이 임계값보다 우위인지 열위인지 여부에 기초하여 이루어진다[블록 16].
도 2a는 동적인 연산 할당의 방법과 함께 사용하기 위한 예시적인 연산 시스템이다. 여기에 개시된 다양한 예에서, 연산 시스템의 컴퓨터(100)는 클라이언트나 서버로서 기능할 수 있다. 도 2a는 프로세서라고도 하는 CPU(central processing unit)(110), 주메모리(120) 및 하나 이상의 대용량 저장 장치(130)를 구비하는 컴퓨터(100)를 포함한다. 일반적으로 프로세서(110)는 마이크로프로세서(μP), 마이크로컨트롤러(μC), DSP(digital signal processor) 혹은 그 임의의 조합을 포함하는 임의의 원하는 구성일 수도 있지만, 여기에 한정되는 것은 아니다. 따라서, 각 프로세서(110)는 ALU(arithmetic logic unit), FPU(floating point unit), DSP(digital signal processor) 코어, 레지스터, 어큐뮬레이터(accumulator) 등과 같은 다른 기능적인 블록은 물론이고 프로그램 명령들을 실행하기 위한 로직을 포함할 수 있다. 주메모리(120)는 RAM(random access memory)과 같은 휘발성 메모리, ROM(read only memory) 및 플래시 메모리 저장부와 같은 비휘발성 메모리 및 자기 디스크 저장부(예컨대, 하드디스크 드라이브 내지 HDD)와 같은 데이터 저장 장치, 테이프 저장부, 광학식 저장부(예컨대, 컴팩트 디스크 내지 CD, 디지털 다기능 디스크 내지 DVD) 또는 착탈 가능하거나, 고정식이거나, 휘발성이거나, 비휘발성일 수 있는 머신 판독 가능한 기타의 저장 매체를 포함하는 임의의 적당한 형태의 메모리일 수 있지만, 여기에 한정되는 것은 아니다.
대용량 저장 장치(130) 및 그 연관된 컴퓨터 저장 매체는 컴퓨터로 판독 가능한 명령, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장부를 컴퓨터(100)에 대하여 제공한다. 또한, 대용량 저장 장치(130)는 운영 체제(140), 어플리케이션 프로그램(150), 프로그램 모듈(160) 및 데이터베이스(180)를 포함할 수 있다. 컴퓨터(100)는 사용자가 명령과 데이터를 입력할 수 있는 사용자 입력 장치(190)를 더 포함한다. 입력 장치는 전자 디지타이저(digitizer), 마이크로폰, 키보드 및 통상 마우스, 트랙볼(trackball) 혹은 터치 패드로 지칭되는 지시 장치(pointing device)를 포함할 수 있다. 다른 입력 장치는 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다.
이들 및 기타의 입력 장치는 시스템 버스에 연결된 사용자 입력 인터페이스를 통해 프로세서(110)에 접속 가능하지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 다른 인터페이스 및 버스 구조에 의하여 접속 가능하다. 컴퓨터(100)와 같은 컴퓨터들은 출력 주변장치 인터페이스(194) 등을 통하여 접속될 수 있는, 스피커와 같은 다른 주변 출력 장치들도 포함할 수도 있다.
컴퓨터(100)는 네트워크 인터페이스(196)에 접속된 원격 컴퓨터와 같은 하나 이상의 컴퓨터에 대한 논리적인 접속을 이용하는 네트워크형 환경에서 동작할 수 있다. 원격 컴퓨터는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치 혹은 기타의 공통 네트워크 노드일 수 있으며, 컴퓨터(100)에 대해 전술한 다수의 혹은 모든 요소들을 포함할 수 있다. 원격 컴퓨터는 컴퓨터(100)의 지정에 따라 클라이언트나 서버 중 다른 쪽으로 고려될 수 있다. 네트워킹 환경은 사무실, 엔터프라이즈 WAN(enterprise-wide area network), LAN(local area network), 인트라넷 및 인터넷에서 흔한 것이다. 소스 및 목적지 머신은 네트워크(108)나 임의의 다른 수단에 의해서 접속될 필요가 없지만, 그 대신 데이터는 소스 플랫폼에 의하여 작성될 수 있고 목적지 플랫폼이나 플랫폼들에 의하여 판독될 수 있는 임의의 매체를 경유해서 옮겨질 수 있다. LAN 혹은 WLAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(100)는 네트워크 인터페이스(196)나 어댑터(adapter)를 통해 LAN에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 통상적으로 컴퓨터(100)는 인터넷이나 네트워크(108)와 같이 WAN에 걸쳐서 통신을 설정하기 위한 모뎀이나 기타 수단을 포함한다. 컴퓨터들 간의 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 점이 이해될 것이다.
도 2b는 여기에 개시된 바와 같은 동적인 연산 할당과 함께 사용하기 위한 예시적인 클라이언트-서버 시스템 내지 환경을 나타낸다. 여기에서 "클라이언트"와 "서버"라는 용어의 사용은 한정하려는 의도가 아니며, 여기에 개시된 시스템과 방법은 표준 클라이언트와 표준 서버 간, 무선 장치와 데스크탑 간, 2개의 데스크탑이나 노트북 컴퓨터와 같은 2개의 유사한 머신 간 혹은 장치들 사이의 접속성 레벨과 같은 성능 특성이 변할 수 있는 임의의 적당한 장치들 간을 포함하여, 임의의 2개의 장치 간 동적인 연산 할당에 대해서 적용 가능하다. 장치들 간의 접속은 무선, 전화 방식 혹은 장치들을 접속하는 임의의 기타 적당한 수단에 의하는 것일 수 있으며, 여기서 접속성의 레벨은 달라질 수 있다. 예시적인 클라이언트-서버 시스템은 휴대용 통신 장치(클라이언트)와 휴대전화 서비스 제공자 서버 혹은 기타 컨텐츠 제공자 서버(서버)를 포함한다.
본 개시의 목적을 위하여, 휴대용 통신 장치와 서버 간 연산 할당의 시스템에 대하여 구체적인 참조가 이루어진다. 일부 실시형태에 있어서, 휴대용 통신 장치(모바일 장치 혹은 휴대전화 장치로도 알려짐)는 보통 소형 키보드나 터치 입력을 갖는 디스플레이 스크린을 포함하는 주머니 크기의 연산 장치일 수 있다. PDA(personal digital assistant)의 경우, 입력 및 출력은 터치스크린 인터페이스로 통합된다.
클라이언트는 네트워크에 의하여 다른 컴퓨터 시스템, 서버 상에서 원격 서비스에 액세스하는 어플리케이션 혹은 시스템이다. 클라이언트-서버 모델은 인터넷 상에서 사용되며, 이 경우 사용자는 인터넷 프로토콜 슈트(internet protocol suite)를 통해 원격 시스템 상에서 동작하는 서비스에 접속할 수 있다. 클라이언스-서버 시스템은 종종 투 티어 구조(two-tier architecture) 상에서 동작하는데, 클라이언트는 하나의 티어로서 동작하며, 서버는 다른 하나의 티어로서 동작한다. 이러한 유형의 구조는 장치들 간의 파일 및 리소스의 공유를 용이하게 한다. 클라이언트-서버 구조의 가장 기본적인 유형은 2개 유형의 호스트인 클라이언트와 서버만 채택한다. 클라이언트-서버 소프트웨어 구조 모델은 클라이언트 시스템을 컴퓨터 네트워크에 걸쳐서 통신하는 서버 시스템과는 구별한다. 클라이언트-서버 환경에서, 클라이언트는 서버로부터 데이터나 다른 요청을 생성한다.
클라이언트/서버 모델은 네트워크 연산에 중심적이다. 인터넷 어플리케이션 프로토콜(HTTP, SMTP, Telnet, DNS 및 기타)은 물론 가장 최신의 비지니스 어플리케이션이 클라이언트/서버 모델을 사용한다. 클라이언트 소프트웨어의 각 인스턴스는 하나 이상의 접속된 서버에 데이터 요청을 전송할 수 있다. 또한, 서버는 이들 요청을 수용하고, 이들을 처리하며, 요청된 정보를 클라이언트로 회신(return)할 수 있다. 비록 이러한 개념이 다수의 서로 다른 종류의 어플리케이션에 대하여 여러가지 이유로 적용 가능하지만, 해당 구조는 근본적으로 동일하게 유지된다.
일반적으로 클라이언트는 "팻 클라이언트" 혹은 "신 클라이언트" 중 하나로서 분류된다. 보통 연산 할당은 클라이언트가 팻 클라이언트인지 신 클라이언트인지 여부에 기초한다. 나아가, 일단 팻 클라이언트나 신 클라이언트로서 지정되고 나면, 그 지정은 보통 변하지 않는다.
(시크 클라이언트(thick client) 혹은 리치 클라이언트(rich client)로도 알려진) 팻 클라이언트는 대규모의 임의의 데이터 처리 동작을 자체 수행하고 서버에 반드시 의존하지는 않는 클라이언트이다. 따라서, 팻 클라이언트는 낮은 접속성 환경에서조차 비교적 빠른 속도로 동작할 수 있다. 그러나, 특히 휴대용 장치 클라이언트의 경우, 클라이언트는 배터리 수명을 유지하기 위해서 혹은 제한된 시스템 리소스로 인하여 더 낮은 품질로 연산이나 렌더링을 수행하도록 구성될 수 있다.
신 클라이언트는 상대적으로 아주 작은 클라이언트(minimal client)이다. 신 클라이언트는 보통 서버의 리소스를 이용한다. 따라서 연산과 렌더링은 서버에서 수행되고, 서버에 의하여 클라이언트에 제공된다. 따라서, 예컨대 신 클라이언트는 어플리케이션 서버에 의해 제공되는 화상을 그래픽으로 디스플레이한다(서버는 대량의 임의의 요구되는 데이터 처리를 수행함). 서버에서 프로세스가 이루어지면서 클라이언트에 전송된 데이터가 더 크기 때문에, 신 클라이언트의 성능은 네트워크에 대한 클라이언트의 접속성에 따라 달라질 수 있다. 신 클라이언트와 함께 존재하는 문제점은 낮은 접속성 환경에서 연산되거나 렌더링된 데이터의 수신보다는, 연산이나 렌더링의 낮은 속도이다. 이는 "래그(lag)"를 유발한다. 래그는 컴퓨터가 동결하고나서 약간의 시간 이후에 계속하는 경우에 사용되는 용어이다. 다수의 비디오 게임에서 래그는 정상적인 게임 진행에 지장을 주기 때문에 바람직하지 못하다.
도 2b는 클라이언트 노드(305)와 서버 노드(355)를 나타낸 전형적인 클라이언트-서버 시스템(300)을 도시하고 있다. 도 2b는 공통적인 클라이언트-서버 시스템을 나타내기 위해서만 의도된 것이며, 여기에 개시된 동적인 연산 렌더링의 시스템 및 방법이 사용될 수 있는 클라이언트-서버 시스템의 유형을 전혀 제한하려는 의도가 아니라는 점을 이해하여야 한다. 도 2b에 나타낸 바와 같이, 클라이언트 노드(305)와 서버 노드(355) 각각은 운영 체제(306, 356) 및 어플리케이션 프로그램(302, 352)을 포함한다. 어플리케이션 프로그램(302, 352)과 운영 체제(306, 356) 간의 상호 작용은 양방향 화살표(304 및 354)에 의하여 개략적으로 도시되어 있다. 이러한 듀얼(dual) 프로그램 시스템은 임의의 클라이언트-서버 시스템에서 사용될 수 있다. 나아가, 이러한 시스템의 변형은 당업자에게 명백할 것이다.
RPC(remote procedure call, 원격 절차 호출) 기능을 제공하기 위하여, 어플리케이션 프로그램은 파라미터 요청을 교환함으로써 스터브(stub) 절차 소프트웨어(310 및 360)와 (화살표(308 및 318)로 개략적으로 나타낸 바와 같이) 상호 작용한다. 각각의 운영 체제(306, 356)와 일반적으로 연관된 각각의 스터브 절차는 컴퓨터 유형에 따라 미리 정해진 메세지 포맷으로 파라미터들을 배열(혹은 플래튼(flatten))한다. RPC는 데이터를 전송하거나 서버에 동작을 수행을 요청할 수 있고, 그에 따라 적절한 스터브 절차(stub procedure)가 그러한 액션을 일으키거나 이에 응답하기 위하여 각 노드에서 구체적으로 설계되어야 한다.
전송 엔티티(transport entity)(314, 364)가 제공되고, 이는 프로토콜 스택의 전송층 내의 소프트웨어이다. 전송 엔티티(314, 316)는 메세지를 수신하고, 이를 패킷으로 포맷화하며, 이를 네트워크 어댑터(316, 366)를 경유하여 네트워크 채널(315) 상에서 전달하기 위하여 스터브 절차와 (화살표(312 및 362)에 의하여 개략적으로 나타낸 바와 같이) 상호 작용한다. 이들 어댑터(316, 366)는 신호, 전기적 및 기계적 특성 중 일부 혹은 전부를 통합하고, 네트워크 채널(315)과의 인터페이스를 위하여 회로를 교환(interchange)한다. 전송 엔티티는 물리적인 네트워크 채널과는 독립적으로, 클라이언트와 서버 간 신뢰성 있고 비용 효율적인 데이터 전송을 용이하게 하도록 제공된다.
RPC 시스템을 구현하기 위하여, 클라이언트(305)의 어플리케이션 프로그램(302)은 예컨대 종래의 절차 호출에 대한 파라미터를 전달하는 것과 유사한 방식으로 파라미터들을 전달함으로써 스터브 절차(310)를 호출한다. 클라이언트 스터브 절차(310)는 데이터 패킷으로서 서버(355)로의 전송을 위하여 전송 엔티티(314)에 전달되는 파라미터들을 플래튼한다. RPC가 무접속 시스템이기 때문에, 보통 전송 엔티티는 패킷을 어댑터(316)로 그리고 채널 상으로 전달하기 전에 그 패킷에 헤더(header)를 부착한다. 패킷이 서버에서 도달할 때, 어댑터(366)는 그것을 전송 엔티티(364)로 그리고 서버 스터브 절차(360) 상으로 전달하며, 이는 파라미터들을 언플래튼(unflatten)한다. 그러면 스터브 절차(360)는 어플리케이션 프로그램(352)을 호출하고, 종래의 방법으로 파라미터들을 전달한다.
그 작업을 완료한 이후, 어플리케이션 프로그램(352)은 예컨대 결과를 회신함으로써 지역 절차 호출(local procedure call)에 대한 종래의 방식으로 회신한다. 스터브 절차(360)는 그 결과를 메세지로 플래튼(flatten)하고, 이를 전송 엔티티(364)로 전달하며, 여기서 응답 패킷이 형성되어 채널(315)에 걸쳐서 클라이언트(305)에 전달된다. 응답 패킷을 수신하는 경우, 전송 엔티티(314)는 언플래튼을 하기 위하여 클라이언트 스터브 절차(310)에 이를 전달한다. 끝으로, 스터브 절차는 응답 파라미터들을 어플리케이션 프로그램(302)에 회신한다.
도 3은 클라이언트(200)가 휴대용 통신 장치이고, 서버(202)가 통신 서비스 제공자 서버나 다른 컨텐츠 제공자 서버인 경우 동적인 연산 렌더링의 예를 나타낸다. 클라이언트(200)와 서버(202) 간의 통신은 무선 네트워크나 인터넷과 같은 네트워크(204)에 걸친다. 나타낸 예에서, 클라이언트(200)와 서버(202) 양자는 렌더링과 모델링(modeling) 기능을 가진다. 할당 로직(201)(할당 모듈이라고도 함)은 성능 특성에 관한 적어도 하나의 인자에 기초하여 클라이언트(200)와 서버(202) 간 연산을 할당하기 위하여 제공될 수 있다. 할당 로직(201)은 서버(202)의 프로세서 상에서 혹은 클라이언트(200)의 프로세서 상에서 실행될 수 있다. 동적인 연산 할당을 결정하기 위하여, 환경 및/또는 클라이언트(200)와 서버(202)에 관한 성능 특성에 관련되는 다수의 인자가 평가될 수 있다. 제1 인자(210)는 접속성의 레벨(206)이다. 높은 접속성 환경에서, 연산 및 렌더링이 서버(202)에 할당될 수 있다. 높은 접속성 환경에서, 래그나 지연의 위험이 줄어들며, 일부 예에서는 다른 인자가 평가되지 않을 수 있다. 따라서, 높은 접속성 환경에서, 서버(202)는 연산과 렌더링을 수행하고, 일반적으로 래그 없이 높은 품질의 데이터를 클라이언트(200)에 내려 보낸다. 낮은 접속성 환경에서, 래그나 지연의 위험이 증가하며, 그에 따라 연산 및 렌더링이 클라이언트(202)에 할당될 수 있다. 일반적으로 클라이언트(200)에 대한 할당은 낮은 품질로 렌더링된 데이터를 낳지만, 래그를 줄이거나 없앤다. 따라서 렌더링된 데이터의 수용 가능한 품질에 관한 제2 인자(212)가 평가될 수 있다. 만약 낮은 품질로 렌더링된 데이터가 수용 가능하지 않다면, 낮은 접속성 환경에도 불구하고 서버(202)에 할당이 이루어질 수 있다. 평가 가능한 제3 인자(214)는 클라이언트(200)의 잔여 배터리 수명이다. 일반적으로, 클라이언트에서의 연산이나 렌더링은 클라이언트 배터리의 더 빠른 고갈을 유발한다. 따라서 제1 인자(210) 및 제2 인자(212)에 기초한 할당에도 불구하고, 클라이언트의 잔여 배터리 수명이 낮다면, 할당이 서버(202)에 이루어지는 경우 이 인자(214)가 우선하는 인자로서 동작할 수 있다. 클라이언트, 서버 혹은 환경의 성능 특성이나 더 많거나 더 적은 인자가 동적인 연산 할당에서 평가될 수 있다.
도 3의 실시형태로부터 이해될 수 있는 바와 같이, 클라이언트(200)와 서버(202)의 성능 능력은 클라이언트 장치의 사용자에게 그것이 유리한 경우에 때때로 이용될 수 있다. 인자는 클라이언트(200)의 사용 중 계속해서 검토될 수 있다. 계속해서란 논스톱(nonstop) 외에도 소정의 구간, 주기 혹은 기타 기간에서를 포함하도록 의도된 것이다. 따라서, 단일 세션의 사용 중 연산 할당이 전환될 수 있다. 전환의 시점을 결정하는 것은 서버와 클라이언트의 성능의 현재 레벨에 따라 달라질 수 있다. 성능의 레벨은 속도, 렌더링 품질, 메모리 가용성 등을 포함하는 몇 가지 성능 특성에 기초할 수 있지만, 여기에 한정되는 것은 아니다.
도 4는 동적인 연산 할당을 위한 방법(220)을 도시하고 있다. 연산을 할당하는데 있어서, 하나 이상의 인자나 성능 특성이 평가될 수 있다. 이와 같은 인자나 성능 특성을 평가하는 것은 그 인자의 현재 값을 해당 인자에 대한 미리 정해진 임계값과 비교하는 것을 포함할 수 있다. 도 4에 도시된 바와 같이, 고려될 각 인자에 대하여 임계값이 설정될 수 있다[블록 222]. 예컨대, 이들은 접속성[블록 224], 렌더링된 데이터 품질[블록 226] 및 잔여 배터리 수명[블록 228]을 포함할 수 있다. 임계값의 설정은 임계 레벨 설정에 관한 임의의 명백한 변형이나 클라이언트 상에서 임계값을 미리 설정하는 것이나 클라이언트에 의하여 임계값을 설정하는 것을 포함하도록 의도된 것이다.
이후 동적인 연산 할당의 방법(220)은 적어도 하나의 인자에 대한 현재 값을 결정하고[블록 230], 그 결정된 값을 설정된 임계값과 비교한다[블록 232]. 이후 연산의 할당은 결정된 값의 임계값에 대한 비교에 기초하여 이루어질 수 있다[블록 234]. 따라서, 예컨대 만약 결정된 접속성이 설정된 임계값보다 열위인 경우, 클라이언트에 할당이 이루어질 수 있다[블록 236]. 만약 렌더링된 데이터의 결정된 품질이 설정된 임계값보다 열위인 경우, 서버에 할당이 이루어질 수 있다[블록 238]. 만약 결정된 잔여 배터리 수명이 설정된 임계값보다 열위인 경우, 할당은 서버에 대하여 이루어질 수 있다[블록 240]. 일부 예에서, 인자는 그 인자 값들 중 하나의 임계값에 대한 측정과 그 임계값에 기초한 특정한 할당이 임의의 다른 할당을 우선할 수 있도록 우선 순위화될 수 있다. 따라서, 예컨대 만약 잔여 클라이언트 배터리 수명이 설정된 임계값보다 열위인 경우, 다른 모든 결정된 인자 값에 무관하게 할당이 서버에 대하여 이루어질 수 있다. 마찬가지로, 만약 결정된 데이터 품질이 수용 가능한 품질의 임계값보다 열위인 경우, 다른 모든 결정된 인자 값에 관계없이 할당이 서버에 대하여 이루어질 수 있다.
동적인 연산 할당의 방법(220)은 클라이언트의 사용 중 계속해서 실행될 수 있다. 따라서, 예컨대 방법(220)은 논스톱으로 실행 가능하거나, 매 5분과 같이 구간 기반으로 실행 가능하거나, 새로운 렌더링이나 연산 프로세스의 개시 시에 실행 가능하다.
도 5는 본 개시에 따른 동적인 연산 할당을 위한 방법(400)의 예의 순서도를 나타낸다. 본 방법은 적어도 하나의 인자의 현재 값을 결정하는 단계를 포함한다[블록 402]. 다양한 예에서, 인자는 접속성, 데이터 품질 혹은 잔여 배터리 수명일 수 있다. 이후 본 방법은 그 인자에 대한 미리 결정된 값에 대하여 그 결정된 값을 비교하는 단계[블록 404] 및 그 비교에 기초하여 연산을 할당하는 단계[블록 406]를 포함한다.
일부 예에서, 도 6의 개략도에 나타낸 바와 같이, 컴퓨터 시스템(600)은 동적인 연산 할당을 위한 예시적인 방법을 수행하기 위하여 구성된 프로세서(605)를 포함할 수 있다. 다른 실시형태에서, 본 방법의 다양한 단계들 중 일부나 다양한 단계들이 프로세서(605) 외부에서 수행될 수 있다. 본 방법은 적어도 하나의 인자의 현재 값을 결정하는 단계[블록 602]를 포함한다. 다양한 실시형태에서, 그 인자는 접속성, 데이터 품질 혹은 잔여 배터리 수명일 수 있다. 이후 본 방법은 해당 인자에 대한 미리 결정된 값에 대하여 그 결정된 값을 비교하는 단계[블록 604] 및 그 비교에 기초하여 연산을 할당하는 단계[블록 606]를 포함한다.
본 개시는 본 출원에서 설명한 특정한 실시형태들의 조건으로 제한되어서는 안되며, 이는 다양한 측면들의 예시로서 의도된 것이다. 당업자에게 명백한 바와 같이, 그 사상과 범위를 벗어나지 않으면서 다수의 개조 및 변경이 이루어질 수 있다. 여기에서 열거한 것들에 부가하여, 본 개시 범위 내의 기능적으로 등가인 방법과 장치는 앞서 언급한 설명들로부터 당업자에게 명백할 것이다. 그와 같은 개조 및 변경은 첨부된 청구항의 범위 내에 속하는 것으로 의도된 것이다. 본 개시는 그러한 청구항에 부여된 것에 대한 모든 범위의 등가물과 함께, 첨부된 청구항의 항목들에 의해서만 제한될 것이다. 본 개시는 특정한 방법, 시약, 화합물 조성이나 생물학적 시스템에 제한되지 않는 것으로 이해되어야 하며, 이는 물론 변할 수 있다. 또한, 여기에 사용된 용어는 특정한 실시형태를 설명하기 위한 목적일 뿐이고 제한하려는 의도가 아니라는 점을 이해하여야 한다.
시스템의 측면에 대한 하드웨어 및 소프트웨어 구현물 간에는 차이가 거의 없으며, 하드웨어나 소프트웨어의 사용은 (특정한 상황에서 하드웨어와 소프트웨어 간의 선택이 중요하게 될 수 있다는 점에서 반드시 그런 것은 아니지만) 일반적으로 비용 대 효율의 맞교환을 나타내는 설계 선택이다. 여기에 기술한 프로세스 및/또는 시스템 및/또는 다른 기술들이 영향을 받을 수 있는 다양한 수단(예컨대, 하드웨어, 소프트웨어 및/또는 펌웨어)이 존재하며, 그 선호되는 수단은 해당 프로세스 및/또는 시스템 및/또는 다른 기술들이 전개되는 상황에 따라 달라질 것이다. 예컨대, 만약 제작자가 속도와 정확도가 가장 중요하다고 결정한다면, 그 제작자는 주로 하드웨어 및/또는 펌웨어 수단을 선택할 수 있고, 만약 적응도가 가장 중요하다면, 해당 제작자는 주로 소프트웨어 구현물을 선택할 수 있으며, 혹은 또 다른 대안으로서 해당 설계자는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합을 선택할 수 있다.
앞서 언급한 상세한 설명은 블록도, 순서도 및/또는 예시를 사용함으로써 해당 장치 및/또는 프로세스들의 다양한 실시형태를 제시하였다. 당업자라면, 그러한 블록도, 순서도 및/또는 예시들이 하나 이상의 기능 및/또는 동작들을 포함하는 한, 그러한 블록도, 순서도 혹은 예시들 내의 각 기능 및/또는 동작이 광범위한 하드웨어, 소프트웨어, 펌웨어 혹은 사실상 그 임의의 조합에 의해서도 개별적으로 및/또는 집합적으로 구현될 수 있음을 이해할 것이다. 일 실시형태에서, 여기에서 기술한 본 대상의 몇가지 부분은 ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), DSP(Digital Signal Processor) 혹은 다른 통합형 포맷을 통해 구현 가능하다. 그러나 당업자라면, 여기에 개시된 실시형태의 일부 측면들이 전체적으로 혹은 부분적으로 하나 이상의 컴퓨터 상에서 실행되는 하나 이상의 컴퓨터 프로그램으로서(예컨대, 하나 이상의 컴퓨터 시스템 상에서 실행되는 하나 이상의 프로그램으로서), 하나 이상의 프로세서 상에서 실행되는 하나 이상의 프로그램으로서(예컨대, 하나 이상의 마이크로프로세서 상에서 실행되는 하나 이상의 프로그램으로서), 펌웨어로서 혹은 사실상 그 임의의 조합으로서 IC(Integrated Circuit) 내에서 동등하게 구현될 수 있으며, 소프트웨어 및/또는 펌웨어에 대한 코드를 작성하고/하거나 회로를 설계하는 일이 본 개시에 비추어 당업자의 기술 내에서는 손쉬울 것이라는 점을 인지할 것이다. 나아가 당업자라면, 여기에 기술된 대상의 메커니즘이 다양한 형태의 프로그램 제품으로서 분산되어 있을 수 있으며, 실제로 그러한 분산을 수행하는데 사용되는 신호 포함 매체의 특정 타입에 관계없이 여기에 기술된 본 대상의 예시적인 실시형태가 적용된다는 점을 이해할 것이다. 신호 포함 매체의 예로는, 제한적이지는 않지만, 플로피디스크, 하드디스크 드라이브, CD(Compact Disk), DVD(Digital Video Disk), 디지탈 테이프, 컴퓨터 메모리 등과 같은 기록 가능한 타입의 매체 및 디지털 및/또는 아날로그 통신 매체와 같은 전송 타입의 매체(예컨대, 광섬유 케이블, 도파관(waveguide), 유선 통신 링크, 무선 통신 링크 등)가 포함된다.
당업자라면, 장치 및/또는 프로세스를 여기에 제시한 방식으로 기술하는 것, 그리고 그 후에 이와 같이 기술된 장치 및/또는 프로세스를 데이터 처리 시스템에 통합하기 위하여 엔지니어링 실무를 이용하는 것이 해당 기술 내에서 일반적이라는 점을 인지할 것이다. 즉, 여기에 기술된 장치 및/또는 프로세스의 적어도 일부는 적정한 양의 실험을 거쳐서 데이터 처리 시스템에 통합될 수 있다. 당업자라면, 통상적인 데이터 처리 시스템이 일반적으로 하나 이상의 시스템 유닛 하우징(system unit housing), 비디오 디스플레이 장치, 휘발성 및 비휘발성 메모리와 같은 메모리, 마이크로프로세서 및 DSP와 같은 프로세서, 운영 체제, 드라이버, 그래픽 유저 인터페이스(graphical user interface) 및 어플리케이션 프로그램과 같은 컴퓨터용 엔티티, 터치 패드나 스크린과 같은 하나 이상의 상호작용 장치 및/또는 피드백 루프와 제어 모터(예컨대, 위치 및/또는 속도를 감지하기 위한 피드백, 컴포넌트 및/또는 수량을 조정하고/하거나 이동시키기 위한 제어 모터)를 포함한 제어 시스템을 구비한다는 점을 인지할 것이다. 통상적인 데이터 처리 시스템은 데이터 연산/통신 및/또는 네트워크 연산/통신 시스템에서 일반적으로 발견되는 것들처럼 임의의 적절한 상업적으로 가용한 컴포넌트를 이용하여서도 구현될 수 있다.
여기에 기술된 대상은 때때로 다양한 다른 컴포넌트들과 접속되거나 그 내부에 포함되는 서로 다른 컴포넌트들을 설명한다. 이와 같이 도시된 아키텍처는 단지 예시적인 것이며, 사실 동일한 기능성을 달성하는 다수의 다른 아키텍처가 구현 가능하다는 점을 이해하여야 한다. 개념적인 관점에서, 동일한 기능성을 달성하기 위한 임의의 컴포넌트의 구성이 원하는 기능성이 얻어지도록 효과적으로 "연관"된다. 그러므로, 특정한 기능을 달성하기 위해 여기서 결합되는 임의의 2개의 컴포넌트가 아키텍처나 상호 매체적인(intermedial) 컴포넌트에 관계없이 원하는 기능성이 달성되도록 서로 "연관되어 있는" 것으로 볼 수 있다. 마찬가지로, 이렇게 연관된 임의의 2개의 컴포넌트는 원하는 기능을 달성하기 위하여 상호 "동작 가능하게 접속"되거나 "동작 가능하게 결합"된 것으로 볼 수도 있으며, 이렇게 연관 가능한 임의의 2개의 컴포넌트는 원하는 기능을 달성하기 위하여 상호 "동작할 수 있도록 결합 가능"한 것으로 볼 수도 있다. 동작할 수 있도록 결합 가능하다는 구체적인 예로는 물리적으로 정합 가능하고/하거나 물리적으로 상호 작용하는 컴포넌트 및/또는 무선으로 상호 작용이 가능하고/하거나 무선으로 상호 작용하는 컴포넌트 및/또는 논리적으로 상호 작용하고/하거나 논리적으로 상호 작용 가능한 컴포넌트가 포함되지만, 여기에 한정되는 것은 아니다.
여기서 사실상 모든 복수 및/또는 단수적 용어의 사용에 관하여, 당업자라면 문맥 및/또는 응용예에 적절한 바와 같이 복수를 단수로 및/또는 단수를 복수로 해석할 수 있다. 다양한 단수/복수의 치환은 명확성을 위하여 여기에 명확하게 제시될 수 있다.
당업자라면 전체적으로 여기에, 그리고 특히 첨부된 청구항(예컨대, 첨부된 청구항의 본문)에서 사용된 용어가 일반적으로 "개방형" 용어로서 의도된 것(예를 들면, "포함하는"이라는 용어는 "포함하되 제한되지는 않는"으로 해석되어야 하고, "가지는"이라는 용어는 "적어도 가지는"으로 해석되어야 하며, "포함한다"는 용어는 "포함하지만 제한되지는 않는다"로 해석되어야 하는 것 등)임을 이해할 것이다. 나아가 당업자라면, 만약 특정한 수의 도입된 청구항 기재사항이 의도된 것이라면 그러한 의도는 해당 청구항에서 명시적으로 기재될 것이며, 그와 같은 기재사항이 부재하는 경우에는 그러한 의도가 없다는 점을 이해할 것이다. 이해를 돕기 위한 예를 들면, 이하의 첨부된 청구항은 청구항 기재사항을 도입하기 위하여 "적어도 하나의" 및 "하나 이상의"이라는 도입 어구의 용법을 포함할 수 있다. 그러나, 동일한 청구항이 "하나 이상의"이나 "적어도 하나의"라는 도입 어구 및 "a"나 "an"과 같은 부정관사를 포함하는 경우에도, 그러한 어구의 용법은 부정관사 "a"나 "an"에 의한 청구항 기재사항의 도입이 그와 같이 도입된 청구항 기재사항을 포함하는 임의의 특정한 청구항이라도 그러한 단 하나의 기재사항만을 포함하는 대상에 제한한다는 의미로 해석되어서는 안되며(예컨대, "a" 및/또는 "an"은 통상적으로 "적어도 하나의" 혹은 "하나 이상의"를 의미하는 것으로 해석되어야 함), 청구항 기재사항을 도입하기 위하여 사용된 정관사의 용법에 대해서도 마찬가지로 적용된다. 또한, 특정한 수의 도입된 청구항 기재사항이 명시적으로 기재되어 있다고 하더라도, 당업자라면 그러한 기재사항이 적어도 그 기재된 수를 의미하는 것으로 일반적으로 해석되어야 함을 인지할 것이다(예컨대, 다른 수식어가 없는 "2개의 기재사항"의 비수식 기재는 적어도 2개의 기재사항이나 2 이상의 기재사항을 일반적으로 의미함). 나아가, "A, B 및 C 중 적어도 하나 등"에 유사한 관례가 사용되는 그러한 경우들에 있어서, 일반적으로 그와 같은 구조는 당업자라면 그러한 관례를 이해할 것이라는 의미에서 의도된 것이다(예컨대, "A, B 및 C 중 적어도 하나를 가지는 시스템"은 단독으로 A를, 단독으로 B를, 단독으로 C를, A와 B를 함께, A와 C를 함께, B와 C를 함께 및/또는 A, B와 C를 함께 가지는 시스템들을 포함할 것이지만 여기에 한정되지는 않는 것 등). "A, B 혹은 C 중 적어도 하나 등"에 유사한 관례가 사용되는 그러한 경우들에 있어서, 일반적으로 그와 같은 구조는 당업자라면 그러한 관례를 이해할 것이라는 의미에서 의도된 것이다(예컨대, "A, B 혹은 C 중 적어도 하나를 가지는 시스템"은 단독으로 A를, 단독으로 B를, 단독으로 C를, A와 B를 함께, A와 C를 함께, B와 C를 함께 및/또는 A, B와 C를 함께 가지는 시스템들을 포함할 것이지만 여기에 한정되지는 않는 것 등). 나아가 당업자라면, 사실상 상세한 설명, 청구항 혹은 도면 중 어디에든 2 이상의 선택적인 용어를 제시하는 모든 선언적인 단어 및/또는 어구가 그 용어들 중 하나, 그 용어들 중 어느 하나 혹은 그 용어들 양자를 포함할 가능성을 고려하도록 이해되어야 한다는 점을 알 것이다. 예컨대, "A 혹은 B"라는 어구는 "A" 혹은 "B" 혹은 "A 및 B"의 가능성들을 포함하도록 이해될 것이다.
또한, 본 개시의 특징이나 측면들이 마쿠쉬(Markush) 그룹의 항목들로 기술되어 있는 경우, 당업자라면 또한 이로써 그 개시내용이 해당 마쿠쉬 그룹의 모든 개별적인 멤버나 멤버들의 하위 그룹의 항목들로 기술된 것으로 인지할 것이다.
또한, 당업자에 의하여 이해되는 바와 같이, 서술된 설명을 제공하는 측면에서처럼 임의의 그리고 모든 목적을 위해서라도, 여기에 개시된 모든 범위는 임의의 그리고 모든 가능한 하위 범위와 그 하위 범위들의 조합이라도 포괄한다. 어떤 나열된 범위라도 그 동일한 범위를 적어도 균등한 절반, 1/3, 1/4, 1/5, 1/10 등으로 분할될 수 있도록 충분히 기술하는 것으로 쉽게 인지될 수 있다. 제한적이지 않은 예로서, 여기에서 논의된 각 범위는 하위 1/3, 중위 1/3 및 상위 1/3 등으로 쉽게 나누어질 수 있다. 또한 당업자에 의해서 이해되는 바와 같이, "까지", "적어도", "보다 더 큰", "보다 더 작은" 등과 같은 모든 표현은 기재된 수를 포함하고, 전술한 바와 같은 하위 범위들로 뒤이어 분할될 수 있는 범위들을 나타낸다. 끝으로, 당업자에 의해 이해되는 바와 같이, 범위는 각각의 개별적인 멤버를 포함한다. 따라서, 예컨대 1 내지 3개 셀을 갖는 그룹은 1개, 2개 혹은 3개 셀을 갖는 그룹들을 지칭한다. 마찬가지로, 1 내지 5개 셀을 갖는 그룹은 1개, 2개, 3개, 4개 혹은 5개 셀을 갖는 그룹들을 지칭하는 식이다.
여기에서는 다양한 측면과 실시형태가 개시되어 있지만, 당업자에게 다른 측면과 실시형태가 명백할 것이다. 여기에 개시된 다양한 측면과 실시형태는 예시를 위한 것이며, 제한하려는 의도가 아니고, 그 진정한 범위와 사상은 이하의 청구항들에 의하여 나타난다.

Claims (27)

  1. 클라이언트와 서버 간의 동적인 연산 할당을 위한 방법에 있어서,
    성능 특성(performance characteristics)에 관한 적어도 하나의 인자의 현재 값을 결정하는 단계 - 상기 적어도 하나의 인자는 잔여 배터리 수명을 포함함 -;
    상기 적어도 하나의 인자에 대한 미리 정해진 임계값에 대하여 상기 결정된 값을 비교하는 단계;
    상기 비교에 기초하여 상기 클라이언트와 상기 서버 간에 이미지를 렌더링(rendering)하기 위한 연산을 할당하는 단계; 및
    상기 연산이 상기 서버에 할당되는 경우, 상기 연산을 이용하여 렌더링된 상기 이미지의 적어도 일부를 포함하는 상기 연산의 결과를 상기 클라이언트에 회신하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 적어도 하나의 인자는 연결성 레벨(connectivity level)을 추가적으로 포함하는, 방법.
  3. 제2항에 있어서,
    연결성 레벨에 대한 상기 결정된 값이 상기 미리 정해진 임계값보다 열위인 경우, 상기 연산은 상기 클라이언트에 할당되는, 방법.
  4. 제1항에 있어서,
    상기 적어도 하나의 인자는 데이터 품질을 추가적으로 포함하는, 방법.
  5. 제4항에 있어서,
    데이터 품질에 대한 상기 결정된 값이 상기 미리 정해진 임계값보다 열위인 경우, 상기 연산은 상기 서버에 할당되는, 방법.
  6. 삭제
  7. 제1항에 있어서,
    배터리 수명에 대한 상기 결정된 값이 상기 미리 정해진 임계값보다 열위인 경우, 상기 연산은 상기 서버에 할당되고,
    배터리 수명에 대한 상기 결정된 값이 상기 미리 정해진 임계값보다 우위이고 데이터 품질이 다른 미리 정해진 임계값보다 우위인 경우, 상기 연산은 상기 클라이언트에 할당되는, 방법.
  8. 클라이언트와 서버 간의 동적인 연산 할당을 위한 방법에 있어서,
    성능 특성에 관한 적어도 하나의 제1 인자의 현재 값을 결정하는 단계;
    상기 적어도 하나의 제1 인자에 대한 미리 정해진 임계값에 대하여 상기 적어도 하나의 제1 인자의 상기 결정된 값을 비교하는 단계;
    배터리 수명의 현재 값을 결정하는 단계;
    상기 배터리 수명에 대한 미리 정해진 임계값에 대하여 상기 배터리 수명의 상기 결정된 값을 비교하는 단계;
    상기 비교들에 기초하여 상기 클라이언트와 상기 서버 간에 이미지를 렌더링(rendering)하기 위한 연산을 할당하는 단계 - 상기 배터리 수명에 기초하여 결정된 할당은 상기 제1 인자에 기초한 할당에 우선함 -; 및
    상기 연산이 상기 서버에 할당되는 경우, 상기 연산을 이용하여 렌더링된 상기 이미지의 적어도 일부를 포함하는 상기 연산의 결과를 상기 클라이언트에 회신하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 제1 인자는 연결성인, 방법.
  10. 삭제
  11. 제1항에 있어서,
    희망하는 연산을 결정하는 단계를 더 포함하고,
    상기 할당하는 단계는 상기 희망하는 연산을 할당하도록 수행되는, 방법.
  12. 제1항에 있어서,
    상기 할당하는 단계는 계속해서(continually) 행해지는, 방법.
  13. 동적인 연산 할당을 위한 시스템에 있어서,
    이미지의 적어도 일부를 렌더링할 수 있는 프로세서를 갖는 서버;
    상기 서버와 통신하고, 이미지의 적어도 일부를 렌더링할 수 있는 프로세서를 갖는 클라이언트; 및
    성능 특성에 관한 적어도 하나의 인자의 현재 값에 기초하여 상기 서버와 상기 클라이언트 간에 렌더링을 할당하도록 구성되는 할당 로직(allocation logic)
    을 포함하고,
    상기 서버는, 상기 렌더링이 상기 서버에 할당되는 경우, 렌더링된 이미지의 적어도 일부를 포함하는 상기 렌더링의 결과를 상기 클라이언트에 회신하도록 구성되는, 시스템.
  14. 제13항에 있어서,
    상기 클라이언트는 휴대용 통신 장치인, 시스템.
  15. 제13항에 있어서,
    상기 할당 로직은 상기 서버의 상기 프로세서 상에서 실행되는, 시스템.
  16. 제13항에 있어서,
    상기 할당 로직은 상기 클라이언트의 상기 프로세서 상에서 실행되는, 시스템.
  17. 삭제
  18. 동적인 연산 할당을 위한 절차를 수행하기 위한 컴퓨터로 실행 가능한 명령을 저장하고 있는 컴퓨터로 액세스 가능한 매체에 있어서,
    상기 절차는,
    잔여 배터리 수명을 포함하는 적어도 하나의 인자의 현재 값을 결정하는 단계;
    상기 인자에 대한 미리 정해진 임계값에 대하여 상기 결정된 값을 비교하는 단계;
    상기 비교에 기초하여 클라이언트와 서버 간에 이미지를 렌더링 하기 위한 연산을 할당하는 단계; 및
    상기 연산이 상기 서버에 할당되는 경우, 상기 연산을 이용하여 렌더링된 상기 이미지의 적어도 일부를 포함하는 상기 연산의 결과를 상기 클라이언트에 회신하는 단계
    를 포함하는, 컴퓨터로 액세스 가능한 매체.
  19. 제18항에 있어서,
    상기 적어도 하나의 인자는 연결성 레벨을 더 포함하는, 컴퓨터로 액세스 가능한 매체.
  20. 동적인 연산 할당을 위한 절차를 수행하기 위한 컴퓨터로 실행 가능한 명령을 저장하고 있는 컴퓨터로 액세스 가능한 매체에 있어서,
    상기 절차는,
    성능 특성에 관한 적어도 하나의 제1 인자의 현재 값을 결정하는 단계;
    상기 적어도 하나의 제1 인자에 대한 미리 정해진 임계값에 대하여 상기 적어도 하나의 제1 인자의 상기 결정된 값을 비교하는 단계;
    잔여 배터리 수명의 현재 값을 결정하는 단계;
    상기 잔여 배터리 수명의 미리 정해진 임계값에 대하여 상기 잔여 배터리 수명의 상기 결정된 값을 비교하는 단계;
    상기 비교들에 기초하여 클라이언트 및 서버 간에 이미지를 렌더링하기 위한 연산을 할당하는 단계 - 상기 잔여 배터리 수명에 기초한 할당은 상기 제1 인자에 기초한 할당에 우선함 -; 및
    상기 연산이 상기 서버에 할당되는 경우, 상기 연산을 이용하여 렌더링된 상기 이미지의 적어도 일부를 포함하는 상기 연산의 결과를 상기 클라이언트에 회신하는 단계
    를 포함하는 컴퓨터로 액세스 가능한 매체.
  21. 제20항에 있어서,
    상기 적어도 하나의 제1 인자는 연결성을 포함하는, 컴퓨터로 액세스 가능한 매체.
  22. 제1항에 있어서,
    단일 세션의 사용 중 상기 클라이언트 및 상기 서버 간에 할당을 전환하는 단계
    를 더 포함하는, 방법.
  23. 제22항에 있어서,
    상기 할당을 전환하는 단계는 상기 서버 및 상기 클라이언트의 성능의 현재 레벨에 적어도 부분적으로 기초하여 전환의 시점을 결정하는 단계를 포함하는, 방법.
  24. 제13항에 있어서,
    상기 할당 로직은 단일 세션의 사용 중 상기 클라이언트 및 상기 서버 간에 할당을 전환하도록 더 구성되는, 시스템.
  25. 제24항에 있어서,
    상기 할당 로직은 상기 서버 및 상기 클라이언트의 성능의 현재 레벨에 적어도 부분적으로 기초하여 전환의 시점을 적어도 부분적으로 결정함으로써 상기 할당을 전환하도록 구성되는, 시스템.
  26. 제1항에 있어서,
    성능 특성에 관한 상기 적어도 하나의 인자는 상기 클라이언트의 성능 특성에 관한 적어도 하나의 인자 및 상기 서버의 성능 특성에 관한 적어도 하나의 인자를 포함하는, 방법.
  27. 제13항에 있어서,
    상기 적어도 하나의 인자는 상기 클라이언트에 관한 적어도 하나의 인자 및 상기 서버에 관한 적어도 하나의 인자를 포함하는, 시스템.
KR1020127003552A 2009-07-10 2010-06-11 동적인 연산 할당 KR101414033B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/500,667 2009-07-10
US12/500,667 US8838797B2 (en) 2009-07-10 2009-07-10 Dynamic computation allocation
PCT/US2010/038367 WO2011005412A1 (en) 2009-07-10 2010-06-11 Dynamic computation allocation

Publications (2)

Publication Number Publication Date
KR20120036360A KR20120036360A (ko) 2012-04-17
KR101414033B1 true KR101414033B1 (ko) 2014-07-01

Family

ID=43428318

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127003552A KR101414033B1 (ko) 2009-07-10 2010-06-11 동적인 연산 할당

Country Status (4)

Country Link
US (1) US8838797B2 (ko)
JP (1) JP5571184B2 (ko)
KR (1) KR101414033B1 (ko)
WO (1) WO2011005412A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012001776A1 (ja) * 2010-06-29 2012-01-05 富士通株式会社 マルチコアシステム、スケジューリング方法およびスケジューリングプログラム
US9467507B2 (en) * 2011-01-03 2016-10-11 Verizon Patent And Licensing Inc. Wireless network cloud computing resource management
US20130016107A1 (en) * 2011-01-14 2013-01-17 Ciinow Inc. Method and mechanism for performing both server-side and client-side rendering of visual data
WO2012124064A1 (ja) * 2011-03-15 2012-09-20 富士通株式会社 ファイル共有化方法および端末
US9240030B2 (en) * 2011-06-09 2016-01-19 Google Inc. Method and mechanism for performing both server-side and client-side rendering of visual data
WO2013020206A1 (en) * 2011-08-08 2013-02-14 Research In Motion Limited Methods and apparatus to obtain and present information
US20150040074A1 (en) * 2011-08-18 2015-02-05 Layar B.V. Methods and systems for enabling creation of augmented reality content
US20150161754A1 (en) * 2013-12-10 2015-06-11 Joel Solomon Isaacson System and method for remote graphics using non-pixel rendering interfaces
US9483811B2 (en) * 2014-01-06 2016-11-01 Microsoft Technology Licensing, Llc Division of processing between systems based on external factors
US9501808B2 (en) * 2014-01-06 2016-11-22 Microsoft Technology Licensing, Llc Division of processing between systems based on business constraints
US20150193275A1 (en) * 2014-01-06 2015-07-09 Microsoft Corporation Building interactive, data driven apps
US9608876B2 (en) 2014-01-06 2017-03-28 Microsoft Technology Licensing, Llc Dynamically adjusting brand and platform interface elements
EP2916225A1 (en) * 2014-03-07 2015-09-09 Crytek GmbH Network-based render service
EP2930621B1 (en) * 2014-04-10 2018-12-05 Crytek GmbH Network-based Render Services and Local Rendering for Collaborative Environments
US9667708B1 (en) * 2015-12-30 2017-05-30 International Business Machines Corporation Boost orchestrator for client-server architectures
US10558824B1 (en) 2019-02-04 2020-02-11 S2 Systems Corporation Application remoting using network vector rendering
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US10552639B1 (en) 2019-02-04 2020-02-04 S2 Systems Corporation Local isolator application with cohesive application-isolation interface
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001094629A (ja) * 1999-09-21 2001-04-06 Canon Inc ネットワーク接続装置及びその制御方法ならびに記録媒体
JP2005011346A (ja) * 2003-06-20 2005-01-13 Docomo Communications Laboratories Usa Inc アプリケーションの適応的レプリケーションをサーバサイドコードユニットを用いて実行する方法および装置
JP2008040763A (ja) * 2006-08-04 2008-02-21 Fujitsu Ltd 負荷分散装置

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7703102B1 (en) * 1999-08-23 2010-04-20 Oracle America, Inc. Approach for allocating resources to an apparatus based on preemptable resource requirements
US7704147B2 (en) * 1999-10-06 2010-04-27 Igt Download procedures for peripheral devices
US7783695B1 (en) * 2000-04-19 2010-08-24 Graphics Properties Holdings, Inc. Method and system for distributed rendering
US7266616B1 (en) * 2001-08-08 2007-09-04 Pasternak Solutions Llc Method and system for digital rendering over a network
JP2004287889A (ja) 2003-03-24 2004-10-14 Ntt Data Corp 分散処理システム、分散処理用装置、方法及びコンピュータプログラム
US7430187B2 (en) * 2003-05-15 2008-09-30 At&T Intellectual Property I, Lp Methods, systems, and computer program products for providing different quality of service/bandwidth allocation to different susbscribers for interactive gaming
US7480709B2 (en) * 2003-11-14 2009-01-20 Rockwell Automation Technologies, Inc. Dynamic browser-based industrial automation interface system and method
GB0328383D0 (en) * 2003-12-06 2004-01-14 Ibm Improved quality of service for network connected clients
US7668939B2 (en) * 2003-12-19 2010-02-23 Microsoft Corporation Routing of resource information in a network
US7719540B2 (en) * 2004-03-31 2010-05-18 Intel Corporation Render-cache controller for multithreading, multi-core graphics processor
US7487319B2 (en) * 2004-11-18 2009-02-03 International Business Machines Corporation Resource allocation unit queue
US7548977B2 (en) * 2005-02-11 2009-06-16 International Business Machines Corporation Client / server application task allocation based upon client resources
US20070070067A1 (en) * 2005-04-29 2007-03-29 Modviz, Inc. Scene splitting for perspective presentations
US20060267997A1 (en) * 2005-05-24 2006-11-30 Walls Jeffrey J Systems and methods for rendering graphics in a multi-node rendering system
US20060267998A1 (en) * 2005-05-24 2006-11-30 Walls Jeffrey J Systems and methods for management of parameters in a multi-node graphics system
US8479146B2 (en) * 2005-09-23 2013-07-02 Clearcube Technology, Inc. Utility computing system having co-located computer systems for provision of computing resources
US7911474B2 (en) * 2006-04-03 2011-03-22 Siemens Medical Solutions Usa, Inc. Memory management system and method for GPU-based volume rendering
US8014308B2 (en) * 2006-09-28 2011-09-06 Microsoft Corporation Hardware architecture for cloud services
US8072467B2 (en) * 2007-01-31 2011-12-06 Microsoft Corporation Request-driven on-demand processing
US8276164B2 (en) * 2007-05-03 2012-09-25 Apple Inc. Data parallel computing on multiple processors
US20090276364A1 (en) * 2008-05-05 2009-11-05 Vito Iaia Process control system
US8610725B2 (en) * 2007-10-10 2013-12-17 Apple Inc. Framework for dynamic configuration of hardware resources
US8718255B2 (en) * 2007-10-10 2014-05-06 Blackberry Limited Method and system for device switching through a server
US8319781B2 (en) * 2007-11-23 2012-11-27 Pme Ip Australia Pty Ltd Multi-user multi-GPU render server apparatus and methods
CN101978352B (zh) * 2007-12-13 2017-11-03 先进微装置公司 用于具有多重图形子系统、减少的功率消耗模式的计算装置的驱动程序架构、软件和方法
DK2256527T3 (en) 2008-02-28 2017-02-13 Sumitomo Electric Industries Optical fiber
US7836184B2 (en) * 2008-05-15 2010-11-16 Ray-V Technologies, Ltd. Method for managing the allocation of resources to channel swarms in a peer-to-peer network
US8386560B2 (en) * 2008-09-08 2013-02-26 Microsoft Corporation Pipeline for network based server-side 3D image rendering
US8441496B1 (en) * 2008-09-30 2013-05-14 Adobe Systems Incorporated Method and system for modifying and rendering scenes via display lists
US9398089B2 (en) * 2008-12-11 2016-07-19 Qualcomm Incorporated Dynamic resource sharing among multiple wireless devices
US9866609B2 (en) * 2009-06-08 2018-01-09 Time Warner Cable Enterprises Llc Methods and apparatus for premises content distribution

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001094629A (ja) * 1999-09-21 2001-04-06 Canon Inc ネットワーク接続装置及びその制御方法ならびに記録媒体
JP2005011346A (ja) * 2003-06-20 2005-01-13 Docomo Communications Laboratories Usa Inc アプリケーションの適応的レプリケーションをサーバサイドコードユニットを用いて実行する方法および装置
JP2008040763A (ja) * 2006-08-04 2008-02-21 Fujitsu Ltd 負荷分散装置

Also Published As

Publication number Publication date
JP2012533114A (ja) 2012-12-20
US8838797B2 (en) 2014-09-16
KR20120036360A (ko) 2012-04-17
JP5571184B2 (ja) 2014-08-13
US20110010455A1 (en) 2011-01-13
WO2011005412A1 (en) 2011-01-13

Similar Documents

Publication Publication Date Title
KR101414033B1 (ko) 동적인 연산 할당
JP4421637B2 (ja) サブタスク・プロセッサの分散スケジューリング
US11070625B2 (en) Server connection capacity management
US8806030B2 (en) Multichannel connections in file system sessions
US10033659B2 (en) Reputation-based mediation of virtual control planes
KR20110053906A (ko) Ims 네트워크를 통한 멀티미디어 서비스의 최적화를 위한 방법 및 시스템
US7970951B2 (en) Method and system for media-based data transfer
KR20170060118A (ko) 분류된 네트워크 스트림의 관리
EP2972855A1 (en) Automatic configuration of external services based upon network activity
WO2019038684A1 (en) SERVER REQUEST MANAGEMENT
US9882773B2 (en) Virtual resource provider with virtual control planes
US20150133214A1 (en) Video encoding based on areas of interest
US10812606B2 (en) Supporting communications in a stream processing platform
US9553774B2 (en) Cost tracking for virtual control planes
KR20170088351A (ko) 다중 장치 협업 기법
US20180351815A1 (en) Client-space network monitoring
JP6754115B2 (ja) 選択装置、装置選択方法、プログラム
US20150373095A1 (en) Method and apparatus for determining service quality profile on data distribution service
KR20150028630A (ko) 캐시 데이터 관리 방법 및 장치
Dhanya et al. Dynamic mobile cloud offloading prediction based on statistical regression
WO2022245482A1 (en) Generating abstractions for offloading tasks to heterogeneous accelerators
US9497088B2 (en) Method and system for end-to-end classification of level 7 application flows in networking endpoints and devices
JP6829156B2 (ja) ネットワーク負荷分散装置および方法
US9185059B1 (en) Management of journaling destinations
Huang Achieving Fairness through Load-Balancing in Social Cloud Computing Networks

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 6