KR20160037987A - 디바이스에 걸친 메모리 리소스를 구성하기 위한 기술 - Google Patents

디바이스에 걸친 메모리 리소스를 구성하기 위한 기술 Download PDF

Info

Publication number
KR20160037987A
KR20160037987A KR1020167005047A KR20167005047A KR20160037987A KR 20160037987 A KR20160037987 A KR 20160037987A KR 1020167005047 A KR1020167005047 A KR 1020167005047A KR 20167005047 A KR20167005047 A KR 20167005047A KR 20160037987 A KR20160037987 A KR 20160037987A
Authority
KR
South Korea
Prior art keywords
memory
local memory
circuitry
local
copy
Prior art date
Application number
KR1020167005047A
Other languages
English (en)
Other versions
KR101785301B1 (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 KR20160037987A publication Critical patent/KR20160037987A/ko
Application granted granted Critical
Publication of KR101785301B1 publication Critical patent/KR101785301B1/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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory
    • G06F2212/286Mirrored cache memory
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

디바이스에 걸쳐 메모리 리소스를 구성하기(composing) 위한 예가 개시된다. 몇몇 예에서, 두 개의 별개의 디바이스에 있는 회로부에 의한 하나 이상의 애플리케이션의 실행과 관련되는 메모리 리소스는 두 개의 디바이스에 걸쳐 구성될 수도 있다. 회로부는, 근거리 메모리 및 원거리 메모리를 포함하는 2레벨 메모리(2LM) 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수도 있다. 몇몇 예에서, 근거리 메모리는 두 개의 디바이스에 별개로 위치되는 근거리 메모리 및 두 개의 디바이스 중 하나에 위치되는 원거리 메모리를 포함할 수도 있다. 원거리 메모리는, 제1 디바이스 또는 제2 디바이스에 대한 오퍼레이팅 시스템에 대해 투명한 방식으로, 별개로 위치된 근거리 메모리들 사이에서 메모리 컨텐츠의 하나 이상의 사본을 마이그레이션하도록 사용될 수도 있다. 다른 예가 설명되고 청구된다.

Description

디바이스에 걸친 메모리 리소스를 구성하기 위한 기술{TECHNIQUES TO COMPOSE MEMORY RESOURCES ACROSS DEVICES}
본원에서 설명되는 예는 전반적으로 컴퓨팅 디바이스에 걸쳐 리소스를 집성하는(aggregating) 것에 관련된다.
컴퓨팅 파워, 네트워킹 성능 및 메모리/스토리지 용량이 증가하고 있는 다양한 폼팩터의 컴퓨팅 디바이스가 개발되고 있다. 몇몇 폼팩터는 유저가 실제로 착용하기에 충분히 소형이고 및/또는 경량이 되도록 시도한다. 예를 들면, 아이웨어(eyewear), 손목 밴드, 목걸이 또는 다른 타입의 웨어러블 폼팩터가 컴퓨팅 디바이스에 대한 가능한 폼팩터로서 고려되고 있다. 추가적으로, 스마트폰 또는 태블릿과 같은 모바일 폼팩터는 컴퓨팅 및 네트워킹 성능을 크게 향상시켰으며 그들의 용도는 최근 몇 년에 걸쳐 지수적으로 성장하였다.
도 1은 제1 시스템의 예를 예시한다.
도 2는 제2 시스템의 예를 예시한다.
도 3은 제3 시스템의 예를 예시한다.
도 4는 예시적인 상태 머신을 예시한다.
도 5는 제1 프로세스의 예를 예시한다.
도 6은 제2 프로세스의 예를 예시한다.
도 7은 메모리 체크포인팅(memory checkpointing)에 대한 예시적인 로직 플로우를 예시한다.
도 8은 제1 장치에 대한 예시적인 블록도를 예시한다.
도 9는 제1 로직 플로우를 예시한다.
도 10은 제1 저장 매체의 예를 예시한다.
도 11은 제2 장치에 대한 예시적인 블록도를 예시한다.
도 12는 제2 로직 플로우를 예시한다.
도 13은 제2 저장 매체의 예를 예시한다.
도 14는 디바이스의 예를 예시한다.
예는 일반적으로, 디바이스에 걸쳐 컴퓨트(compute), 메모리 및 입/출력(input/output; I/O) 리소스를 집성하기 위한 개선책을 대상으로 한다. 컴퓨팅 디바이스와 같은 디바이스에 걸친 집성은, 어쩌면, 상이한 기능성(functionality) 및/또는 성능을 각각 구비할 수도 있는 다수의 컴퓨팅 디바이스를 활용하는 것에 의해, 영향을 받을 수도 있다. 예를 들면, 몇몇 컴퓨팅 디바이스는, 유저가 컴퓨팅 디바이스를 실제로 착용하기에 충분히 소형일 수도 있다. 다른 타입의 소형 폼팩터 컴퓨팅 디바이스는, 스마트폰 또는 태블릿을 포함할 수도 있는데, 스마트폰 또는 태블릿에서는, 사이즈/무게 및 긴 배터리 수명이 이들 디바이스의 유저가 소망하는 특징이다. 그러므로, 웨어러블, 스마트폰 또는 태블릿 컴퓨팅 디바이스 각각은 상대적으로 경량일 수도 있고 배터리 수명을 연장시키기 위해 적은 양의 배터리를 사용할 수도 있다. 여전히, 유저는, 이들 소형 폼팩터에서 가능하지 않을 수도 있는 더 많은 계산 성능(computational capability)을 기대할 수도 있다.
다른 타입의 컴퓨팅 디바이스는 다소 정적일 수도 있고 따라서, 웨어러블, 스마트폰 또는 태블릿 컴퓨팅 디바이스와 비교하여, 상대적으로 큰 배터리 또는 고정식 전원에 의해 전력을 인가받는 더 큰 폼팩터를 가질 수도 있다. 이들 다른 컴퓨팅 디바이스는, 데스크탑 컴퓨터, 랩탑, 또는 통합된 큰 포맷의(예를 들면, 15인치보다 더 큰) 디스플레이를 구비하는 올인원 컴퓨터를 포함할 수도 있다. 이들 다른 디바이스의 대형 폼팩터 및 (예를 들면, 전원 콘센트(power outlet)를 통한) 고정식 전원 또는 대형 배터리 전원의 사용은, 상당히 많은 컴퓨팅, 메모리 또는 I/O 리소스가 이들 폼팩터와 함께 포함되거나 또는 이들 폼팩터에 부착되는 것을 허용할 수도 있다. 특히, (예를 들면, 하나 이상의 팬을 통한) 능동 냉각의 사용가능성과 함께, 더 큰 폼팩터와 관련되는 더 큰 열용량은, 더 소형의 폼팩터와 비교하여, 상당히 많은 컴퓨팅, 메모리 또는 I/O 리소스를 허용할 수도 있다.
대조적으로, 언급된 바와 같은 웨어러블, 스마트폰 또는 태블릿 컴퓨팅 디바이스는, 배터리 전력에 의존하며 능동 냉각 성능을 갖지 않는 상대적으로 소형의 폼팩터를 갖는다. 또한, 전원 회로부(circuitry) 및 배터리의 사용은 이들 타입의 디바이스의 전류 전달 용량(current-carrying capacity)을 감소시킬 수도 있다. 감소된 전류 전달 용량은 잠재적으로 파워풀한 컴퓨팅 리소스의 타입이 이들 더 소형의 폼팩터에서 구현되는 것을 제한할 수도 있다. 또한, 더 많은 비용 및/또는 공간 제약은, 더블 데이터 레이트 동기식 동적 랜덤 액세스 메모리(double data rate synchronous dynamic random-access memory; DDR SRAM)와 같은 몇몇 타입의 메모리 리소스 양을 상대적으로 감소시키게 될 수도 있다.
상이한 메모리 성능을 갖는 컴퓨팅 디바이스에 걸친 메모리 리소스의 집성이 소망되는 목적일 수도 있다. 컴퓨팅 디바이스에 걸쳐 메모리 리소스를 집성시키기 위한 현재의 시도는, 주로 소프트웨어 구현예에 의존한다. 이들 타입의 소프트웨어 구현예는 일반적으로 높은 레이턴시 및 저하된 유저 경험으로 나타나게 된다. 예를 들면, 소프트웨어 구현예와 관련되는 유저 인지가능 지연은, 올인원 컴퓨터 및 스마트폰과 같은 집성 디바이스 사이에서 고선명 비디오 또는 게이밍 정보를 스트리밍 할 때 나타날 수도 있다. 유저 인지가능 지연은, 디바이스 사이에서 메모리 리소스가 집성될 때 일렁이거나 정지된 비디오로 나타날 수도 있다. 따라서, 다수의 컴퓨팅 디바이스에 걸친 메모리 리소스의 끊김 없는(seamless) 집성은, 집성에 대해 소프트웨어 구현에 주로 의존할 때 문제가 될 수도 있다. 이들 및 다른 도전과제와 관련하여, 본원에서 설명되는 예가 필요로 된다.
몇몇 예에 따르면, 예시적인 제1 방법은, 제1 회로부, 예를 들면 프로세싱 엘리먼트(들) 및/또는 그래픽 엔진(들)을 구비하는 제1 디바이스(소스 디바이스)에서 구현될 수도 있다. 이들 예의 경우, 제1 회로부는, 제1 근거리 메모리(near memory) 및 제2 원거리 메모리(far memory)를 포함하는 2레벨 메모리(two-level memory; 2LM) 아키텍처 또는 방식을 사용하여 하나 이상의 애플리케이션을 실행할 수도 있다. 이들 예의 경우, 제2 회로부를 구비하는 제2 디바이스(타겟 디바이스)가 검출될 수도 있다. 제2 회로부는, 제2 근거리 메모리(near memory)를 또한 포함하는 2LM 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수도 있다. 소스 디바이스에서의 로직 및/또는 피쳐는, 소스 디바이스로 하여금, 예를 들면, 유선 또는 무선 인터커넥트를 통해, 타겟 디바이스에 연결하게 할 수도 있다. 로직 및/또는 피쳐는, 제1 근거리 메모리로부터의 메모리 컨텐츠의 사본(copy)을 제2 근거리 메모리로 마이그레이션하기 위해 제1 원거리 메모리를 활용할 수도 있다. 이들 제1의 예시적인 방법에 따르면, 메모리 컨텐츠의 사본을 제2 근거리 메모리로 마이그레이션하기 위한 제1 원거리 메모리의 활용은, 소스 디바이스 또는 타겟 디바이스에 대한 오퍼레이팅 시스템(operating system; OS)에 대해 투명한 방식으로, 로직 및/또는 피쳐가 메모리 컨텐츠를 마이그레이션하는 것을 가능하게 할 수도 있다.
몇몇 다른 예에서, 예시적인 제2 방법은, 제1 니어 및 제1 원거리 메모리를 구비하는 2LM 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제1 회로부를 구비하는 제1 디바이스(타겟 디바이스)에서 구현될 수도 있다. 이들 예시적인 제2 방법의 경우, 소스 디바이스에서 제2 근거리 메모리를 또한 포함하는 2LM 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제2 회로부를 구비하는 제2 디바이스(소스 디바이스)는, 타겟 디바이스에 연결될 때 검출될 수도 있다. 타겟 디바이스에서의 로직 및/또는 피쳐는, 제1 원거리 메모리로부터, 제2 근거리 메모리로부터의 메모리 컨텐츠의 사본을 수신할 수도 있다. 메모리 컨텐츠는 하나 이상의 애플리케이션을 실행하도록 제2 회로부에 의해 사용될 수도 있다. 로직 및/또는 피쳐는, 타겟 또는 소스 디바이스를 위한 OS에 투명한 방식으로, 메모리 컨텐츠의 사본을 제1 근거리 메모리에 저장할 수도 있다. 그 다음, 제1 근거리 메모리에 저장되는 메모리 컨텐츠는 하나 이상의 애플리케이션을 실행하도록 제1 회로부에 의해 사용될 수도 있다.
도 1은 예시적인 제1 시스템을 예시한다. 몇몇 예에서, 예시적인 제1 시스템은 시스템(100)을 포함한다. 시스템(100)은, 도 1에서 도시되는 바와 같이, 디바이스(105) 및 디바이스(155)를 포함한다.
몇몇 예에 따르면, 디바이스(105 및 155)는 컴퓨팅 디바이스에 대한 상이한 폼팩터의 두 개의 예를 나타낼 수도 있다. 하기에서 더 설명되는 바와 같이, 디바이스(105)는 주로 배터리 전력을 사용하여 동작할 수도 있는 소형 폼팩터일 수도 있고 한편 디바이스(155)는, 예를 들면, 전력 시설로부터 구매한 전력과 관련되는, 전원 콘센트를 통해 수신되는 교류(alternating current; A/C)와 같은 고정식 전원을 사용하여 주로 동작할 수도 있는 상대적으로 더 큰 폼팩터일 수도 있다.
몇몇 예에서, 디바이스(105)의 유저에게 실행 애플리케이션(들)(144(a))의 뷰를 제시할 수도 있는 터치스크린/디스플레이(110)를 포함하는 디바이스(105)의 한 면에 대응할 수도 있는 전면측(front side)으로부터 관측될 때의 디바이스(105)가 도 1에서 도시된다. 마찬가지로, 디바이스(155)의 유저에게 실행 애플리케이션(144(b))의 뷰를 제시할 수도 있는 터치스크린/디스플레이(150)를 포함하는 전면측으로부터 관측될 때의 디바이스(155)가 도 1에서 도시된다. 몇몇 예에서, 디스플레이는 디바이스(105) 또는 디바이스(155)의 이면측(back side) 상에 또한 존재할 수도 있으며, 설명의 용이성을 위해, 도 1은 양 디바이스에 대한 이면측 디스플레이는 포함하지 않는다.
몇몇 예에 따르면, 디바이스(105 및 155)의 전면측 뷰는, 이들 디바이스를 전면 뷰에서 볼 때 유저에게 적어도 부분적으로 보일 수도 있는 엘리먼트/피쳐를 포함한다. 또한, 몇몇 엘리먼트/피쳐는 전면측 뷰로부터 디바이스(105 또는 155)를 볼 때 유저에게 보이질 않을 수도 있다. 이들 예의 경우, 실선의(solid-lined) 박스는 적어도 부분적으로 보일 수도 있는 피쳐를 나타내고 점선의 박스는 유저에게 보이지 않을 수도 있는 (예를 들면, 스킨 또는 커버 아래의) 엘리먼트/피쳐를 나타낼 수도 있다. 예를 들면, 트랜스시버/통신(comm.) 인터페이스(102 및 180)는 유저에게 보이지 않을 수도 있지만, 카메라(들)(104), 오디오 스피커(들)(106), 입력 버튼(들)(108), 마이크(들)(109) 또는 터치스크린/디스플레이(110) 중 적어도 일부는 여전히 유저에게 보일 수도 있다.
몇몇 예에 따르면, 도 1에서 도시되는 바와 같이, 통신 링크(107)가 네트워크 인터페이스(103)를 통해 디바이스(100)를 무선으로 커플링할 수도 있다. 이들 예의 경우, 네트워크 인터페이스(103)는, 통신 링크(107)를 통한 네트워크(도시되지 않음)와의 네트워크 연결을 확립하기 위해 하나 이상의 무선 통신 표준안에 따라 동작하도록 구성될 수도 있고/있거나 동작할 수도 있다. 네트워크 연결은 디바이스(105)가 데이터를 수신/송신하는 것을 가능하게 할 수도 있고/있거나 네트워크를 통한 음성 통신을 가능하게 할 수도 있다.
몇몇 예에서, 디바이스(105)의 다양한 엘리먼트/피쳐는 검출된 입력 커맨드(예를 들면, 유저 제스쳐 또는 오디오 커맨드)와 관련되는 센서 정보를 제공할 수도 있다. 예를 들면, 터치 스크린/디스플레이(110)는 터치 제스쳐를 검출할 수도 있다. 카메라(들)(104)는 공간적/에어(air) 제스쳐 또는 패턴/오브젝트 인식을 검출할 수도 있다. 마이크(들)(109)는 오디오 커맨드를 검출할 수도 있다. 몇몇 예에서, 검출된 입력 커맨드는 실행 애플리케이션(144(a))에 영향을 끼칠 수도 있고 자연 UI 입력 이벤트로서 해석될 수도 있다. 도 1에서 도시되진 않지만, 물리적 키보드 또는 키패드가 또한, 실행 애플리케이션(들)(144(a))에 영향을 끼칠 수도 있는 입력 커맨드를 수신할 수도 있다.
몇몇 예에 따르면, 도 1에서 도시되는 바와 같이, 디바이스(105)는 회로부(120), 배터리(130), 메모리(140), 및 스토리지(145)를 포함할 수도 있다. 회로부(120)는 메모리(140)에서 적어도 일시적으로 유지되는 앱(들)(144)을 실행할 수 있는 하나 이상의 프로세싱 엘리먼트 및 그래픽 엔진을 포함할 수도 있다. 또한, 회로부(120)는, 메모리(140)에 적어도 일시적으로 또한 유지될 수도 있는 오퍼레이팅 시스템(OS)(142)을 실행할 수도 있다.
몇몇 예에서, 도 1에서 도시되는 바와 같이, 디바이스(155)는 회로부(160), 스토리지(175), 메모리(170) 및 트랜스시버/통신 인터페이스(180)를 포함할 수도 있다. 디바이스(155)는 또한, 디바이스(155)의 컴포넌트로 능동 냉각을 제공할 수도 있는 팬(들)(165)을 포함할 수도 있다. 또한, 도 1에서 도시되는 바와 같이, 디바이스(155)는 집적 컴포넌트(integrated component; 182)를 포함할 수도 있다. 집적 컴포넌트(182)는 다양한 컴포넌트, 예컨대, 디바이스(155)와 통합될 수도 있는 카메라, 마이크, 스피커 또는 센서를 포함할 수도 있지만, 이들로 제한되지는 않는다.
몇몇 예에 따르면, 도 1에서 도시되는 바와 같이, 디바이스(155)는 코드(cord; 194)를 통해 전원 콘센트(195)에 커플링될 수도 있다. 이들 예의 경우, 디바이스(155)는, 코드(194)를 통해 전원 콘센트(195)에 커플링되는 것을 통해, 고정 소스의 전력(예를 들면, A/C 전력)을 받아들일 수도 있다.
몇몇 예에서, 도 1에서 도시되는 바와 같이, 디바이스(155)는 통신 링크(184)를 통해 주변장치(들)(185)에 커플링될 수도 있다. 이들 예의 경우, 주변장치(들)(185)는, 모니터, 디스플레이, 외부 스토리지 디바이스, 스피커, 마이크, 게임 컨트롤러, 카메라, I/O 입력 디바이스 예컨대 키보드, 마우스, 트랙볼 또는 스타일러스를 포함할 수도 있지만, 이들로 제한되지는 않는다.
몇몇 예에 따르면, 디바이스(105)의 로직 및/또는 피쳐는 디바이스(155)를 검출할 수도 있다. 예를 들면, 트랜스시버/통신 인터페이스(102 및 180) 각각은, 인터커넥트(101)를 통해 디바이스(155)와 연결하는 유선/무선 통신 채널을 디바이스(105)가 확립하는 것을 가능하게 할 수도 있는 유선 및/또는 무선 통신 인터페이스를 포함할 수도 있다. 몇몇 예에서, 디바이스(105)는 디바이스(155)에 커플링되는 (예를 들면, 도킹 스테이션 또는 동글의) 유선 인터페이스에 물리적으로 연결될 수도 있다. 다른 예에서, 디바이스(105)는, 디바이스(105)가 디바이스(155)와의 무선 연결 예컨대 무선 도킹을 확립하는 것을 가능하게 할 수도 있는 소정의 물리적 근접범위(given physical proximity) 내에 있을 수도 있다. 유선 또는 무선 연결에 응답하여, 디바이스(105)가 디바이스(155)를 검출하는 것을 가능하게 할 수도 있고 또한 앱(들)(144)을 실행하는 데 이용가능한 회로부와 같은 디바이스(155)의 적어도 몇몇 성능을 결정하는 것을 가능하게 할 수도 있는 정보가 교환될 수도 있다.
몇몇 예에서, 트랜스시버/통신 인터페이스(102 및 180)에 포함되는 유선 및/또는 무선 인터페이스는, 하나 이상의 낮은 레이턴시, 고대역폭 및 효율적인 인터커넥트 기술에 따라 동작할 수도 있다. 유선 인터커넥트 기술은, 2010년 11월에 공표된 주변장치 컴포넌트 인터커넥트(Peripheral Component Interconnect; PCI) 익스프레스 베이스 명세, 리비전 3.0("PCI 익스프레스" 또는 "PCIe") 또는 Intel® 퀵패쓰 인터커넥트(QuickPath Interconnect; "QPI")와 유사한 인터커넥트를 포함하는 산업 표준 또는 명세(아류 또는 변형예를 포함함)와 관련되는 기술을 포함할 수도 있지만, 이들로 한정되지는 않는다. 무선 인터커넥트 기술은, WiGig™ 및/또는 Wi-Fi™와 관련되는 기술을 포함할 수도 있지만, 이들로 제한되지는 않으며, Wi-Fi 및/또는 WiGig 주파수 대역, 예를 들면, 2.4, 5 또는 60 GHz를 포함하는 다양한 주파수 대역을 통해 무선 통신 채널을 확립하고/하거나 유지할 수도 있다. 이들 타입의 무선 인터커넥트 기술은, 미국 전기전자공학회(Institute of Electrical and Electronic Engineers; IEEE)에 의해 공표되는 다양한 표준안에서 설명될 수도 있다. 이들 표준안은, 2012년 3월에 공표된 "IEEE Standard for Information technology - Telecommunications and information exchange between systems - Local and metropolitan area networks - Specific requirements Part 11: WLAN Media Access Controller (MAC) and Physical Layer (PHY) Specifications"와 관련되는 이더넷 무선 표준안(아류 및 변형예를 포함함), 및/또는 이 표준안의 차후 버전("IEEE 802.11")을 포함할 수도 있다. WiFi 및 WiGig에 그리고 또한 무선 도킹에 관련되는 하나의 이러한 표준안은 IEEE 802.11 ad이다.
몇몇 예에 따르면, 회로부(160)는, 메모리(170)에서 또한 적어도 일시적으로 유지될 수도 있는 OS(142)를 실행할 수 있는 하나 이상의 프로세싱 엘리먼트 및 그래픽 엘리먼트를 포함할 수도 있다. 회로부(160)는, 메모리(170)에서 또한 적어도 일시적으로 유지되는 앱(들)(144)을 또한 실행할 수도 있다. 몇몇 예에서, 앱(들)(144) 또는 OS(142)와 같은 애플리케이션을 실행하는 것과 관련되는 컨텍스트 정보 및 메모리 컨텐츠는 인터커넥트(101)를 통해 디바이스(105)의 로직 및/또는 피쳐로부터 전송될 수도 있다. 컨텍스트 정보 및 메모리 컨텐츠는 회로부(160)가 회로부(120)로부터 앱(들)(144) 및/또는 OS(142)의 실행을 인수하거나 재개하는 것을 가능하게 할 수도 있다. 컨텍스트 정보는, 앱(들)(144) 및/또는 OS(142)를 실행하기 위해 회로부(120)에 의해 사용되는 하나 이상의 캐시(예를 들면, 프로세서 캐시(들))로부터 플러싱될 수도 있다. 그 다음, 메모리(140)(예를 들면, 근거리 메모리)에 포함되는 메모리 컨텐츠뿐만 아니라 플러싱된 컨텍스트 정보는 디바이스(155)에 있는 제2 근거리 메모리(예를 들면, 메모리(170)에 포함됨)로 전송될 수도 있다. 이제 플러싱된 컨텍스트 정보 및 메모리 컨텐츠를 구비하는 제2 근거리 메모리는, 회로부(160)가 앱(들)(144)을 실행하는 것을 가능하게 할 수도 있는데, 이것은, 실행 애플리케이션(144(b))으로서 디스플레이(150) 상에서의 그 실행의 표현으로 나타날 수도 있다.
몇몇 예에서, 앱(들)(144)은, 디바이스(105)의 유저가, 디바이스(155)에서 이용가능한 증가된 컴퓨팅, 메모리 또는 I/O 리소스를 이용하여 활용하기를 소망할 수도 있는 애플리케이션의 타입을 포함할 수도 있다. 예를 들면, 능동 냉각, 고정식 전원 및 더 큰 폼팩터로 인해, 회로부(160)는 회로부(120)보다 상당히 많은 양의 컴퓨팅 파워 및/또는 메모리 리소스를 포함할 수도 있다. 더 높은 컴퓨팅 파워의 관점에서, 이것은, 적어도 부분적으로, 팬(들)(165)의 사용을 통해 회로부(160)로부터의 열을 방열하는 더 큰 열용량에 기인할 수도 있고 또한 큰 히트 싱크 또는 히트 파이프와 같은 수동 수단을 통해 열을 방열하는 더 큰 표면적에 기인할 수도 있다. 따라서, 회로부(160)는 상당히 큰 열 범위 내에서 동작할 수 있다. 또한, 더 많은 메모리 리소스의 관점에서, 대형 폼팩터는 추가적인 메모리 모듈을 허용할 수도 있다. 또한, 전원 콘센트(195)를 통해 전력을 수신하는 것은, 디바이스(155)가 상당히 높은 전류 전달 용량을 회로부(160) 및/또는 메모리(170)에 제공하는 것을 허용할 수도 있다. 더 높은 전류 전달 용량은, 인터랙티브 게이밍 또는 비디오 편집과 같은 몇몇 타입의 애플리케이션에서는 일반적일 수도 있는 급격히 폭발적인 컴퓨팅 수요에 대해, 회로부(160) 및/또는 메모리(170)가 더 빨리 응답하는 것을 가능하게 할 수도 있다.
앱(들)(144)은, 15인치 이상의 수직 디스플레이 거리를 갖는 디스플레이와 같은 더 큰 디스플레이 상에서 제시될 고선명 스트리밍 비디오 애플리케이션(예를 들면, 적어도 4K 해상도를 가짐)과 같은 애플리케이션의 타입을 또한 포함할 수도 있다. 예를 들면, 회로부(120)는 상대적으로 작은 터치스크린/디스플레이(110) 상에서 고선명 비디오를 표현하기에는 충분할 수도 있지만, 더 큰 터치스크린/디스플레이(150)는 회로부(120)의 성능 및/또는 디바이스(105)의 열용량을 초과할 수도 있다. 따라서, 회로부(160)는 이런 타입의 애플리케이션을 실행하여 고선명 스트리밍을 더 큰 터치스크린/디스플레이(150)에 또는 어쩌면 주변장치(들)(185)에 포함되는 더욱 더 큰 디스플레이에 제시하도록 활용될 수도 있다.
앱(들)(144)은 또한 대형 또는 소형 디스플레이 상에서 사용될 수 있는 터치 스크린 애플리케이션을 포함할 수도 있다. 예를 들면, 터치 스크린 애플리케이션은, 더 큰 사이즈의 및/또는 더 높은 해상도의 터치 스크린 이미지를 터치스크린/디스플레이(150)에 제시하도록 회로부(160)에 의해 실행될 수도 있다. 또한, 터치 스크린 애플리케이션은 다수의 스크린 상에 터치 스크린 이미지를 미러링할 수도 있다. 예를 들면, 터치 스크린 애플리케이션의 일부는, 실행 애플리케이션(144(a))을 터치스크린/디스플레이(110)에 제시하도록 회로부(120)에 의해 구현될 수도 있고 다른 부분은 실행 애플리케이션(144(b))을 터치스크린/디스플레이(150)에 제시하도록 회로부(160)에 의해 구현될 수도 있다. 이 예의 경우, 터치 스크린 애플리케이션의 결합 실행(joint execution)을 가능하게 하기 위해, 인터커넥트(101)를 통해 회로부(120)와 회로부(160) 사이에서 일관성 정보(coherency information)가 교환될 수도 있다. 몇몇 예에 따르면, 디바이스(105)에서의 로직 및/또는 피쳐는 메모리(140)에 포함되는 메모리 컨텐츠의 하나 이상의 사본을 메모리(170)로 마이그레이션할 수도 있다. 일단 메모리 컨텐츠의 사본이 메모리(170)로 마이그레이션되면, 회로부(160)는 앱(들)(144)을 실행하기 위해 메모리 컨텐츠의 사본을 사용할 수도 있다. 이들 예의 경우, 메모리 컨텐츠의 하나 이상의 사본은, 디바이스(105) 또는 디바이스(155) 중 어느 하나에서의 회로부에 의해 실행되는 적어도 OS(142)에 투명한 방식으로, 마이그레이션될 수도 있다. 하기에서 더 설명되는 바와 같이, 2레벨 메모리(2LM) 아키텍처 또는 방식의 사용은, 앱(들)(144) 및/또는 OS(142)와 같은 오퍼레이팅 시스템에 투명한 이러한 타입의 정보 교환을 허용할 수도 있다. 또한, 하기에서 더 설명되는 바와 같이, 2LM 아키텍처는 두 개의 디바이스에서 별도로 유지되는 근거리 메모리 및 두 개의 디바이스 중 하나에서 유지되는 원거리 메모리를 포함할 수도 있다. 두 개의 근거리 메모리 및 하나의 원거리 메모리는, OS 또는 애플리케이션을 어떤 디바이스가 실제로 실행하고 있는지를 OS(142)와 같은 OS 또는 앱(들)(144)과 같은 애플리케이션이 모를 수도 있도록, 구성될 수도 있다. 결과적으로, 별개로 유지되는 근거리 메모리 사이에서의 메모리 컨텐츠의 하나 이상의 사본의 마이그레이션은 OS 또는 애플리케이션에 대해 투명할 수도 있다.
도 2는 예시적인 제2 시스템을 예시한다. 몇몇 예에서, 예시적인 제2 시스템은 시스템(200)을 포함한다. 시스템(200)은, 도 2에서 도시되는 바와 같이, 디바이스(205) 및 디바이스(255)의 다양한 컴포넌트를 포함한다. 몇몇 예에 따르면, 디바이스(205)의 컴포넌트는 인터커넥트(201)를 통해 디바이스(255)의 컴포넌트에 커플링될 수도 있다. 도 1에 관해 상기에서 언급된 디바이스(105 및 155)와 유사하게, 인터커넥트(201)는, 다양한 인터커넥트 기술 및/또는 표준안에 따라 동작하는 유선 및/또는 무선 인터페이스를 통한 유선 또는 무선 통신 채널을 통해 확립될 수도 있다. 결과적으로, 인터커넥트(201)는, 디바이스(205 및 255)의 적어도 몇몇 컴포넌트 사이에서 컴퓨팅, 메모리 또는 I/O 리소스가 집성되거나 구성되는 것을 허용하는 낮은 레이턴시, 고대역폭의 효율적인 인터커넥트를 나타낼 수도 있다.
몇몇 예에서, 도 2에서 도시되는 바와 같이, 디바이스(205)는, 프로세싱 엘리먼트(들)(222) 및 그래픽 엔진(들)(224)을 포함하는 회로부(220)를 구비할 수도 있다. 회로부(220)의 이들 엘리먼트는, 도 1에 관해 상기에서 언급된 앱(들)(144)과 유사한 하나 이상의 애플리케이션을 실행할 수도 있다. 또한, 디바이스(255)는, 프로세싱 엘리먼트(들)(262) 및 그래픽 엔진(들)(264)을 포함하는 회로부(260)를 구비할 수도 있다. 근거리 메모리(270) 또는 회로부(260)와 비교하여, 도 2에서 묘사되는 바와 같은 근거리 메모리(240) 또는 회로부(220)의 엘리먼트의 상대적인 사이즈는, 디바이스(205)와 비교하여 디바이스(255)에 대해 증가된 계산 능력 또는 메모리 리소스를 나타낼 수도 있다. 이들 증가된 계산 능력 또는 메모리 리소스는, 디바이스(105)와 비교될 때, 디바이스(155)에 대해 상기에서 주어지는 다양한 예(예를 들면, 고정식 전원, 더 큰 열용량, 높은 전류 전달 용량, 더 큰 폼팩터 등등)에, 적어도 부분적으로, 기인할 수도 있다.
몇몇 예에 따르면, 낮은 레이턴시, 고대역폭의 효율적인 인터커넥트 외에, 회로부(220)에 의해 실행되고 있는 애플리케이션에 대한 컨텍스트 정보 및 메모리 컨텐츠의 빠르고 효율적인 교환이, 다소 끊김 없는 방식(예를 들면, 수 분의 1초(fraction of a second) 미만 내에서 발생함)으로 전환되고 그 다음 회로부(260)에 의해 실행되는 것을 용이하게 하기 위해, 2LM 아키텍처가 디바이스(205) 및 디바이스(255)에서 구현될 수도 있다. 예를 들면, 디바이스(205)에 있는 근거리 메모리(240)는 낮은 레이턴시/높은 성능 타입의 메모리 예컨대 DDR SRAM을 포함할 수도 있다. 또한, 디바이스(255)에 있는 근거리 메모리(270)는 유사한 타입의 메모리를 포함할 수도 있다. 2LM 아키텍처의 일부로서, 원거리 메모리(245)는 더 높은 레이턴시/더 낮은 성능 타입의 메모리 예컨대, 3D 크로스 포인트 메모리(3-D cross-point memory), NAND 플래시 메모리, NOR 플래시 메모리, 강유전체 메모리, 실리콘 산화물 질화물 산화물 실리콘(silicon-oxide-nitride-oxide-silicon; SONOS) 메모리, 강유전체 폴리머 메모리와 같은 폴리머 메모리, 강유전체 트랜지스터 랜덤 액세스 메모리(ferroelectric transistor random access memory; FeTRAM 또는 FeRAM) 또는 오보닉 메모리를 포함할 수도 있지만, 이들로 제한되지는 않는다. 몇몇 예에 따르면, 회로부(220 또는 260) 중 어느 하나에 의해 실행될 디바이스(205 또는 255)에 대한 OS 및 애플리케이션은 원거리 메모리(245)를 시스템 메모리로서 인식할 수도 있고 근거리 메모리(240 및 270)는 애플리케이션을 실행할 때 회로부(220 및 260)에 의해 사용하기 위한 원거리 메모리(245)에 대한 캐시로서 기능할 수도 있다. 몇몇 예에서, 인터커넥트(201)의 확립에 후속하여, 디바이스(205)의 로직 및/또는 피쳐는, 회로부(220)에 의해 실행되고 있는 애플리케이션이 디바이스(255)에 있는 회로부(260)에 의해 실행될 수 있다는 것을 결정할 수도 있다. 이들 예의 경우, 디바이스(205)의 로직 및/또는 피쳐는 애플리케이션을 실행하기 위해 사용되는 메모리 컨텐츠의 사본을 인터커넥트(201)를 통해 근거리 메모리(240)로부터 근거리 메모리(270)로 마이그레이션할 수도 있다. 일단 메모리 컨텐츠의 사본이 근거리 메모리(240)로 마이그레이션되면, 메모리 컨텐츠는 애플리케이션의 실행을 재개하도록 회로부(260)에 의해 사용될 수도 있다.
몇몇 예에 따르면, 그 다음, 디바이스(205)에서의 로직 및/또는 피쳐는, 지금 애플리케이션을 실행하고 있는 회로부(260)와 관련되는 I/O 정보를 라우팅할 수도 있다. 이들 예의 경우, 디바이스(205)에 대한 2LM 아키텍처의 일부로서 기능하는 원거리 메모리(245)의 적어도 일부는, 디바이스(205) 또는 디바이스(255)에서 어떤 근거리 메모리가 사용되고 있는지를 디바이스(205) 및/또는 디바이스(255)에 대한 OS가 모를 수도 있도록, I/O 정보의 이 라우팅을 가능하게 할 수도 있다. 결과적으로, 디바이스(205)와 디바이스(255) 사이에서의 I/O 정보의 라우팅은, 디바이스(205) 및/또는 디바이스(255)에 대한 OS에 대해 투명한 방식으로 행해질 수도 있다.
몇몇 예에서, 디바이스(205) 및 디바이스(255) 둘 다에서 구현되는 2LM 아키텍처는, 일단 메모리 컨텐츠의 사본이 근거리 메모리(270)로 마이그레이션되면, 근거리 메모리(240)에 대한 동작 전력 레벨을 유지하지 않아도 되는 것에 의해, 디바이스(205)가 실질적으로 더 적은 전력을 사용하는 것을 가능하게 할 수도 있다. 추가적으로, 원거리 메모리(245) 및 근거리 메모리(270)는 OS에 대해 동일한 2LM 아키텍처로서 보일 수도 있고 따라서 디바이스(205 및 255) 사이에서의 플러싱된 컨텍스트 정보 및 메모리 컨텐츠의 사본의 마이그레이션을 마스킹하거나 또는 투명하게 만들 수도 있다. 이와 같이, OS는 애플리케이션이 별개의 디바이스 상에서 존재하는 회로부 상에서의 실행을 위해 마이그레이션한 것을 인지하지 못할 수도 있다. 또한, 애플리케이션을 실행하기 위해 회로부(220)에 의해 사용되는 프로세서 캐시(도시되지 않음)로부터의 컨텍스트 정보의 플러싱에 후속하여, 디바이스(205)의 로직 및/또는 피쳐가, 회로부(220)의 전력을 슬립 또는 유사한 타입의 더 낮은 전력 상태로 낮추는 것에 의해, 추가적인 전력이 절약될 수도 있다. 무선 통신(240), I/O(210) 및 원거리 메모리(245)와 같은 디바이스(205)의 다른 컴포넌트는 전력을 계속 인가받을 수도 있다. 그러나 이들 다른 컴포넌트는 상당히 적은 양의 전력을 사용할 수도 있고 따라서 디바이스(205)는 상당한 양의 배터리 전력을 보존할 수도 있다.
도 2에서 도시되지는 않지만, 몇몇 예에서, 원거리 메모리는 디바이스(255)에서 유지될 수도 있다. 이들 예의 경우, 디바이스(255)에 있는 원거리 메모리는, 인터커넥트(201)와 관련되는 잠재적인 레이턴시 이슈를 보상하기 위한 캐시의 타입으로서 기능할 수도 있다. 또한, 디바이스(255)에 있는 원거리 메모리는, 디바이스(255)의 로직 및/또는 피쳐가 디바이스(255)에 있는 원거리 메모리 및 근거리 메모리(270) 둘 다를 사용하여 디바이스(205)와의 연결 동안 구성될 가변적인 메모리 어퍼쳐 사이즈를 지원하는 것을 허용할 수도 있다. 따라서, 니어 레벨 메모리(270)는 니어 레벨 메모리(240)로부터 플러싱된 컨텍스트 정보를 수신하기 위한 용량에 매치하도록 동적으로 사이즈가 정해질 수도 있다.
몇몇 예에 따르면, 도 2에서 도시되는 바와 같이, 무선 통신부(240)는 디바이스(205)에 커플링될 수도 있다. 이들 예의 경우, 무선 통신부(240)는, 디바이스(205)가 무선 네트워크 또는 다른 디바이스에 대한 디바이스(255)용의 테더(tether)로서 기능할 수 있게 하는 수단일 수도 있다. 이것은, 다양한 타입의 무선 통신 채널 예컨대 Bluetooth™, WiFi, WiGig 또는 브로드밴드 무선/4G 무선 통신 채널을 통해 발생할 수도 있다. 애플리케이션의 실행과 관련되는 I/O 정보는 이들 타입의 무선 통신 채널을 통해 수신될 수도 있다. 예를 들면, 고선명 비디오는, 디바이스(255)가 아닌 디바이스(205)를 사용하여 4G 무선 네트워크에 액세스하기 위한 가입 또는 유저 계정과 관련되는 4G 무선 통신 채널을 통해 스트리밍될 수도 있다. 이들 예의 경우, I/O(210)는 무선 통신부(240)를 통해 스트리밍 비디오 정보를 수신할 수도 있고 스트리밍 비디오를 원거리 메모리(245)에 적어도 일시적으로 저장할 수도 있다. 그 다음, 디바이스(205)에서의 로직 및/또는 피쳐는, 회로부(260)에 의한 비디오 디스플레이 애플리케이션의 실행을 위해, 이 I/O 정보를 인터커넥트(201)를 통해 근거리 메모리(270)로 라우팅할 수도 있다. 그 다음, 디바이스(205)에서의 로직 및/또는 피쳐는 고선명 비디오가, I/O(250)를 통해 디바이스(255)에 커플링되는 디스플레이(도시되지 않음)에 제시되게 할 수도 있다. 몇몇 예에서, 디바이스(205)의 로직 및/또는 피쳐는, 인터커넥트(201)를 통한 디바이스(255)로의 연결이 종료될 것이라는 표시를 수신할 수도 있다. 예를 들면, 디바이스(255 및/또는 205)의 유저는 입력 커맨드(예를 들면, 키보드 또는 자연 UI 입력 이벤트를 통해 검출됨)를 통해, 디바이스(205)가 유선 통신 채널로부터 물리적으로 연결해제되려고(disconnected) 한다는 것을 나타낼 수도 있다. 대안적으로, 인터커넥트(201)가 무선 통신 채널을 통하고 있으면, 디바이스(205)의 로직 및/또는 피쳐는, 디바이스(255)에 대한 소정의 물리적 근접범위 밖으로 이동하는 디바이스(205)로 나타날 수도 있는 방식으로, 디바이스(205)의 움직임을 검출할 수도 있다. 소정의 근접범위는, 디바이스(205)가 인터커넥트(201)를 통해 정보를 교환하기 위한 적절한 무선 통신 채널을 유지할 수도 있는 범위일 수도 있다.
몇몇 예에 따르면, 인터커넥트(201)의 계류 중인 종료(pending termination)의 표시를 수신하는 것에 응답하여, 디바이스(205)의 로직 및/또는 피쳐는 회로부(220) 및 근거리 메모리(240)로 하여금 동작 전력 상태로 전력을 다시 올리게 할 수도 있다. 상기에서 언급된 바와 같이, 디바이스(205)의 이들 컴포넌트는, 플러싱된 컨텍스트 정보 및 메모리 컨텐츠의 근거리 메모리(270)로의 마이그레이션에 후속하여 전력이 낮춰졌을 수도 있다. 이들 예의 경우, 디바이스(255)의 로직 및/또는 피쳐는, 회로부(260)에 있는 애플리케이션을 실행하기 위한 컨텍스트 정보가 캐시(들)(도시되지 않음)로부터 플러싱되게 하고 근거리 메모리(270)에 유지되는 메모리 컨텐츠의 제2 사본이 인터커넥트(201)를 통해 원거리 메모리(245)로 전송되게 할 수도 있다. 일단 플러싱된 컨텍스트 정보 및 메모리 컨텐츠의 제2 사본이 원거리 메모리(245)에서 수신되면, 플러싱된 컨텍스트 정보 및 메모리 컨텐츠의 제2 사본의 적어도 일부는 근거리 메모리(240)로 마이그레이션/저장될 수도 있다. 그 다음, 회로부(220)는, 애플리케이션의 실행을 재개하기 위해, 플러싱된 컨텍스트 정보 및 메모리 컨텐츠의 제2 사본의 적어도 일부를 사용할 수도 있다. 몇몇 예에서, 그 다음, 디바이스(255)에서의 로직 및/또는 피쳐는, 인터커넥트(201)를 통한 컨텍스트 정보 및 메모리 컨텐츠의 제2 사본의 원거리 메모리(245)로의 전송에 후속하여, 회로부(260) 및 근거리 메모리(270)의 전력을 낮출 수도 있다.
도 3은 예시적인 제3 시스템을 예시한다. 몇몇 예에서, 예시적인 제3 시스템은 시스템(300)을 포함한다. 시스템(300)은, 도 3에서 도시되는 바와 같이, 디바이스(305) 및 디바이스(355)의 다양한 컴포넌트를 포함한다. 다양한 컴포넌트는, 도 2의 시스템(200)에 대한 상기에서 설명된 디바이스(205) 및 디바이스(255)에 대한 상기에서 설명된 컴포넌트와 유사한다. 즉, 디바이스(305 및 355)는, 각각의 프로세싱 엘리먼트(들)(322/362) 및 그래픽 엔진(들)(324/364)을 포함하는 각각의 회로부(320 및 360)를 구비한다. 또한, 도 3에서 도시되는 바와 같이, 디바이스(305 및 355)는 별개의 근거리 메모리(330 및 370)를 포함할 수도 있고 디바이스(305)는 원거리 메모리(340)를 구비한다.
몇몇 예에 따르면, 도 3에서 도시되는 바와 같이, 시스템(300)은 원거리 메모리(340) 및 근거리 메모리(370)를 구비하는 구성가능한(composable) 메모리(310)를 포함할 수도 있다. 이들 예의 경우, 도 3에서 도시되지는 않지만, 디바이스(305)에서 유지되는 원거리 메모리(340)와 디바이스(355)에서 유지되는 근거리 메모리(370) 사이에서 원거리 메모리 채널(344)이 확립되는 것을 가능하게 하기 위해, 낮은 레이턴시, 고대역폭, 무선 또는 유선의 인터커넥트가 디바이스(305)를 디바이스(355)에 커플링할 수도 있다.
하기에서 더 상세히 설명되는 바와 같이, 구성 가능한 메모리(310)는 근거리 메모리(330)와 함께, 디바이스(305 또는 355)에 대한 OS에 대해 투명할 수도 있는 방식으로, 근거리 메모리(330)와 근거리 메모리(370) 사이에서의 메모리 컨텐츠의 하나 이상의 사본의 마이그레이션을 용이하게 하는 2LM 아키텍처 또는 방식의 일부일 수도 있다. 다시 말하면, 하나 이상의 애플리케이션을 실행하는 것과 관련되는 컨텍스트 정보 및 메모리 컨텐츠의 사본이, 회로부(320)에 의해 사용되는 근거리 메모리(330)와 회로부(360)에 의해 사용되는 근거리 메모리(370) 사이에서 마이그레이션될 때, 어떤 디바이스가 하나 이상의 애플리케이션을 실행하고 있을 수도 있는지를 OS는 모를 수도 있다. 투명성은, 원거리 메모리(340)가 시스템 메인 메모리로서 OS에게 제공될 수도 있고, 근거리 메모리(330 및 370)가, 하나 이상의 애플리케이션을 실행할 때 각각의 회로부(320 및 360)에 의해 사용하기 위한 원거리 메모리(340)에 대한 캐시로서 기능할 수도 있도록 하는 방식으로 구현되는 2LM 아키텍처에 기초할 수도 있다. 결과적으로, OS는 원거리 메모리(340)만을 인식할 수도 있으며, 두 개의 근거리 메모리 사이에서의 컨텍스트 정보 및 메모리 컨텐츠의 하나 이상의 사본의 마이그레이션을 알지 못한다.
몇몇 예에서, 근거리 메모리(370)는, 근거리 메모리(330)에 대한 제2 메모리 용량보다 실질적으로 더 큰 제1 메모리 용량을 포함할 수도 있다. 예를 들면, 근거리 메모리(330)는 기가바이트 미만의 메모리 용량을 구비할 수도 있고 근거리 메모리(370)는 수 기가바이트의 메모리 용량을 구비할 수도 있다. 메모리 용량 차이는, 디바이스(355)의 더 큰 폼팩터 사이즈에 기인할 수도 있고 또한, 더 큰 계산적 리소스와 매치하는 더 많은 메모리 용량에 대한 더 높은 필요성으로 이어질 수도 있는, 회로부(320)와 비교하여 회로부(360)에 포함되는 더 큰 계산적 리소스에 기인할 수도 있다. 예는, 가능한 메모리 용량 차이에 대한 이들 두 개의 이유로만 제한되지 않는다.
몇몇 예에 따르면, 회로부(320) 및 회로부(360) 둘 다가 2LM 아키텍처를 사용하여 애플리케이션을 실행할 수 있기 때문에, 근거리 메모리(330 및 370) 사이의 사이즈 차이는, 원거리 메모리(340)에 대한 메모리 용량이 근거리 메모리(370)에 대한 메모리 용량 이상인 것을 보장하는 것에 의해 수용될 수도 있다. 이들 예의 경우, 원거리 메모리(340)는, 더 낮은 액세스 레이턴시를 가질 수도 있지만, 어쩌면 근거리 메모리(330 또는 370)에 대해 사용되는 메모리의 타입과 비교하여, 기가바이트의 메모리 용량마다 실질적으로 더 적은 비용 및 실질적으로 더 적은 전력을 사용할 수도 있는 불휘발성 메모리의 타입을 가지고 구성될 수도 있다. 더 낮은 비용 및 더 적은 전력 사용량은, 근거리 메모리(330)와 비교하여 원거리 메모리(340)에 대해 실질적으로 더 큰 메모리 용량을 가능하게 할 수도 있다.
몇몇 예에서, 2LM 아키텍처의 사용을 통해, 디바이스(305 및 355)에 대한 OS는, 근거리 메모리(370)에 대한 메모리 용량과 적어도 동일한 원거리 메모리(340)와 관련되는 메모리 용량에 기초하여, 회로부(320 또는 360)에 의해 실행되도록 정렬될 수도 있다. 이들 예의 경우, 디바이스(305)로부터 디바이스(355)로의 애플리케이션의 실행의 마이그레이션은, 근거리 메모리(330 및 370)와 관련되는 잠재적으로 상이한 메모리 용량을 담당하기 위해 메모리 어드레싱 구조를 OS가 리사이싱/변환하지 않아도 되는 것에 의해, 용이하게 될 수도 있다. 회로부(320)에 의해 실행될 때 OS에 의해 사용되는 메모리 어드레싱 방식은, 다른 회로부에 의해 사용되는 상당히 더 큰 근거리 메모리 예컨대 회로부(360)에 의해 사용되는 근거리 메모리(370)가 큰 메모리 용량을 더 잘 활용할 수 있도록, 디자인될 수도 있다. 예를 들면, OS가 근거리 메모리(330)에 대한 메모리 용량과 관련되는 메모리 어드레싱 방식만을 사용하였다면, 근거리 메모리(370)에서 더 큰 메모리 용량을 갖는 이점은, 근거리 메모리(330)의 더 낮은 메모리 용량과 관련되는 메모리 어드레싱 방식을 사용하는 것에 의해 감소될 수도 있다. 몇몇 예에서, 회로부(360)에 또는 회로부(360)와 함께 위치되는 통합 메모리 컨트롤러(integrated memory controller; iMC)(376) 또는 회로부(320)에 또는 회로부(320)와 함께 위치되는 iMC(326)는, 하나 이상의 애플리케이션의 실행과 관련되는 메모리 컨텐츠 정보의 이동을 용이하게 하기 위해 다양한 메모리 채널을 사용할 수도 있다. 또한, 원거리 메모리(340)에 있는 또는 원거리 메모리(340)와 함께 있는 메모리 컨트롤러(memory controller; MC)는, 예를 들면, 하나 이상의 애플리케이션의 실행 동안 나타날 수도 있는 각각의 근거리 메모리에서의 페이지 누락(page miss)에 응답하여, 다양한 메모리 채널을 통해 요청 데이터를 iMC(376) 또는 iMC(326)로 제공할 수도 있다. 몇몇 예에서, 상기에서 언급되는 원거리 메모리 채널(344) 외에, 메모리 컨텐츠 정보를 취출(retrieve), 전송, 복제 또는 마이그레이션하기 위한 도 3에서 도시되는 다양한 메모리 채널은, 회로부(360)와 근거리 메모리(370) 사이에 근거리 메모리 채널(372)을 포함할 수도 있다. 다양한 메모리 채널은 또한, 원거리 메모리(340)와 근거리 메모리(330) 사이에 원거리 메모리 채널을 그리고 회로부(320)와 근거리 메모리(330) 사이에 근거리 메모리 채널(332)을 포함할 수도 있다. 상기에서 간략히 언급되고 하기에서 더 설명되는 바와 같이, 디바이스(305) 또는 디바이스(355)에서의 로직 및/또는 피쳐는, 근거리 메모리(330 또는 370)에서 유지되는 메모리 컨텐츠가 디바이스(305) 또는 디바이스(355)에 대한 OS에 투명할 수도 있는 방식으로 이들 다양한 메모리 채널을 통해 취출, 전송, 복제 또는 마이그레이션될 수도 있도록 하나 이상의 애플리케이션을 실행하기 위해 2LM 아키텍처를 활용할 수도 있다
도 4는 예시적인 상태 머신(400)을 예시한다. 몇몇 예에서, 상태 머신(400)은 두 디바이스에서의 근거리 메모리 및 회로부의 다양한 상태 및 디바이스 사이에서의 메모리 컨텐츠의 복제 및 컨텍스트 정보의 이동을 묘사한다. 이들 예의 경우, 디바이스(305 및 355)에 관한 도 3에 관해 상기에서 나타내어지고 설명되는 컴포넌트를 포함하는 시스템(300)의 엘리먼트는 상태 머신(400)을 설명하기 위해 사용된다. 그러나, 예시적인 상태 머신(400)은 도 3에 관해 상기에서 나타내어지거나 또는 설명되는 컴포넌트로 제한되지 않는다.
몇몇 예에서, 도 4에서 도시되는 바와 같이, 도킹(dock)이 처음 발생하거나 또는 디바이스(305)에서의 로직 및/또는 피쳐에 의해 검출될 때, 디바이스(305)는 실행 상태에 있을 수도 있다. 이들 예의 경우, 회로부(320)는 하나 이상의 애플리케이션을 실행하고 있을 수도 있다. 도킹의 검출에 후속하여, 디바이스(305)에서의 로직 및/또는 피쳐는, 하나 이상의 애플리케이션을 실행하는 것과 관련되는 컨텍스트 정보가 회로부(320)에 의해 사용되는 캐시(들)로부터 플러싱되게 할 수도 있다. 그 다음, 로직 및/또는 피쳐는 회로부(320)를 비활성화할(quiesce) 수도 있다. 로직 및/또는 피쳐는 또한, 근거리 메모리(330)의 메모리 컨텐츠의 제1 사본을 원거리 메모리(340)로 마이그레이션하고, 그 다음, 회로부(320) 및 근거리 메모리(330) 둘 다의 전력을 저전력/비동작 전력 상태(예를 들면, 슬립 전력 상태)로 낮출 수도 있다. 그 다음, 디바이스(305)에서의 로직 및/또는 피쳐는, 컨텍스트 정보 및 메모리 컨텐츠의 제1 사본이, 인터커넥트를 통해 라우팅되는 메모리 채널을 통해 디바이스(355)에 있는 근거리 메모리(370)로 또한 마이그레이션되게 할 수도 있다.
몇몇 예에 따르면, 디바이스(355)에서의 로직 및/또는 피쳐는, 동작 전력 상태에 있을 수도 있는 파워 업 상태(power up state)까지 회로부(260) 및 근거리 메모리(270)를 기상시킬(wake up) 수도 있다. 기상은 도킹의 검출에 후속하여 발생할 수도 있다. 그 다음, 로직 및/또는 피쳐는 수신된 메모리 컨텐츠의 제1 사본 및 컨텍스트 정보를 근거리 메모리(270)에 저장할 수도 있다. 이제, 회로부(260)는 디바이스(305)에 있는 회로부(320)에 의해 이전에 실행된 하나 이상의 애플리케이션을 실행하기 위한 실행 상태에 있을 수도 있다.
몇몇 예에서, 디바이스(355)에서의 로직 및/또는 피쳐는, 디바이스(355)가 디바이스(305)로부터 도킹해제하려고 한다는 표시를 수신할 수도 있다. 이들 예의 경우, 디바이스(355)에서의 로직 및/또는 피쳐는, 하나 이상의 애플리케이션을 실행하는 것과 관련되는 컨텍스트 정보가 회로부(360)에 의해 사용되는 캐시(들)로부터 플러싱되게 할 수도 있다. 그 다음, 로직 및/또는 피쳐는 회로부(360)를 비활성화할 수도 있다. 로직 및/또는 피쳐는 또한, 근거리 메모리(370)의 메모리 컨텐츠의 제2 사본을 원거리 메모리(340)로 마이그레이션하고, 그 다음, 회로부(360) 및 근거리 메모리(370) 둘 다의 전력을 저전력/비동작 전력 상태(예를 들면, 슬립 전력 상태)로 낮출 수도 있다.
몇몇 예에 따르면, 디바이스(305)에서의 로직 및/또는 피쳐는, 동작 전력 상태에 있을 수도 있는 파워 업 상태까지 회로부(320) 및 근거리 메모리(330)를 기상시킬 수도 있다. 기상은, 디바이스(305)가 디바이스(355)로부터 도킹해제하려고 한다는 표시에 후속하여 발생할 수도 있다. 그 다음, 로직 및/또는 피쳐는 컨텍스트 정보 및 메모리 컨텐츠의 제2 사본을 원거리 메모리(340)로부터 근거리 메모리(330)로 전송할 수도 있다. 이제, 회로부(320)는 디바이스(355)에 있는 회로부(360)에 의해 이전에 실행된 하나 이상의 애플리케이션을 실행하기 위한 실행 상태에 있을 수도 있다. 몇몇 예에서, 상태 머신(400)에 대해 도 4에서 도시되는 상태의 전이는, 디바이스(305) 또는 디바이스(355)의 유저가 실질적으로 인지하지 못할 수도 있는 레이트에서 발생할 수도 있다. 예를 들면, 수 분의 1초 미만(예를 들면, 10분의 1초)이다. 하기에서 더 설명되는 바와 같이, 디바이스(305 및 355) 둘 다에서의 로직 및/또는 피쳐는, 근거리 메모리(330 및 370) 사이에서의 메모리 컨텐츠의 사본의 빠른 마이그레이션을 보장하여, 유저에 의해 인지될 때 실질적으로 인지될 수 없는 방식으로, 하나 이상의 애플리케이션의 실행이 디바이스(305)에 있는 회로부(320)에서 디바이스(355)에 있는 회로부(360)로 그리고 그 다음 두 디바이스가 도킹해제할 때 다시 회로부(320)로 전환되는 것을 가능하게 하기 위해, 다양한 정책을 구현할 수도 있다.
도 5는 예시적인 프로세스(500)를 예시한다. 몇몇 예에서, 프로세스(500)는 디바이스 사이에서 메모리 리소스를 집성하거나 구성하기 위한 것일 수도 있다. 이들 예의 경우, 도 3에서 도시되는 바와 같은 시스템(300)의 엘리먼트가 프로세스(500)에 관련되는 예시적인 동작을 예시하기 위해 사용될 수도 있다. 그러나, 예시적인 프로세스 또는 동작은 시스템(300)의 엘리먼트를 사용하는 구현예로 제한되는 것은 아니다.
프로세스 5.0(애플리케이션(들)을 실행)에서 시작하면, 디바이스(305)의 회로부(320)는 하나 이상의 애플리케이션을 실행하고 있을 수도 있다. 예를 들면, 하나 이상의 애플리케이션은, 스트리밍 비디오를 디바이스(305)에 있는 디스플레이에 제시하기 위한 비디오 스트리밍 애플리케이션을 포함할 수도 있다.
프로세스 5.1(디바이스를 검출)로 진행하면, 디바이스(305)에서의 로직 및/또는 피쳐는, 디바이스(355)에 의해 실행되고 있는 하나 이상의 애플리케이션의 적어도 일부를 실행할 수 있는 회로부(360)를 구비하는 디바이스(355)를 검출할 수도 있다.
프로세스 5.2(인터커넥트를 통한 연결)로 진행하면, 디바이스(305)에서의 로직 및/또는 피쳐는 디바이스(305)로 하여금 인터커넥트를 통해 디바이스(355)에 연결되게 할 수도 있다. 몇몇 예에서, 인터커넥트에 대한 연결은 유선 통신 채널을 통할 수도 있다. 다른 예에서, 인터커넥트에 대한 연결은 무선 통신 채널을 통할 수도 있다.
프로세스 5.3(컨텍스트 정보를 플러싱, 회로부를 비활성화)으로 진행하면, 디바이스(305)에서의 로직 및/또는 피쳐는, 하나 이상의 애플리케이션의 적어도 일부를 실행하기 위해 사용되는 컨텍스트 정보로 하여금 근거리 메모리(330)로부터 플러싱되게 할 수도 있다. 예를 들면, 근거리 메모리(330)에 적어도 일시적으로 유지되는 비디오 프레임 정보는 플러싱될 수도 있다.
프로세스 5.4(인터커넥트를 통해 컨텍스트 정보, 메모리 컨텐츠의 사본을 전송)로 진행하면, 디바이스(305)에서의 로직 및/또는 피쳐는 근거리 메모리(330)의 메모리 컨텐츠의 사본 및 플러싱된 컨텍스트 정보로 하여금 유선/무선 인터커넥트를 통해 디바이스(355)로 전송되게 할 수도 있다. 몇몇 예에서, 플러싱된 컨텍스트 정보 및 메모리 컨텐츠의 사본은, 유선/무선 인터커넥트를 통해 디바이스(355)로 전송되기 이전에 원거리 메모리(340)로 먼저 전송될 수도 있다.
프로세스 5.5(회로부, 근거리 메모리 전력 감소)로 진행하면, 디바이스(305)에서의 로직 및/또는 피쳐는, 플러싱된 컨텍스트 정보 및 메모리 컨텐츠의 사본의 전송에 후속하여, 회로부(320) 및 근거리 메모리(330)로 하여금 전력을 낮추게 할 수도 있다.
프로세스 5.6(근거리 메모리로의 컨텍스트 정보, 메모리 컨텐츠의 사본을 수신)으로 진행하면, 디바이스(355)에서의 로직 및/또는 피쳐는, 근거리 메모리(370)로의 컨텍스트 정보 및 메모리 컨텐츠의 사본을 수신할 수도 있다.
프로세스 5.7(애플리케이션(들)을 실행)로 진행하면, 회로부(360)는 근거리 메모리(370)로 수신되고/저장되는 플러싱된 컨텍스트 정보 및 메모리 컨텐츠의 사본을 사용하여 하나 이상의 애플리케이션을 실행할 수도 있다. 예를 들면, 비디오 디스플레이 애플리케이션을 실행하기 위한 비디오 프레임 정보는, 디바이스(355)에 커플링되는 디스플레이로 스트리밍 비디오를 제시하기 위해 사용될 수도 있다. 스트리밍 비디오는, 대형 사이즈의 디스플레이(예를 들면, 15인치보다 더 큼)로 제시되는 고선명 비디오(예를 들면, 적어도 4K 해상도)일 수도 있다.
프로세스 5.8(메모리 체크포인팅 또는 라이트백(write-back) 정책에 기초한 더티 페이지(들)(Dirty Page(s)) 전송)로 진행하면, 디바이스(355)에서의 로직 및/또는 피쳐는, 회로부(360)에 의한 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지로 하여금 디바이스(305)로 전송되게 하는 라이트백 정책 또는 메모리 체크포인팅을 구현할 수도 있다. 몇몇 예에서, 라이트백 정책 또는 메모리 체크포인팅은, 도킹해제시 디바이스(305)의 근거리 메모리(330)로 다시 마이그레이션될 필요가 있는 다수의 더티 페이지를 최소화하거나 또는 감소시키도록 구현될 수도 있다. 라이트백 정책 또는 메모리 체크포인팅은, 일단 초과되면 더티 페이지의 원거리 메모리(340)로의 전송을 야기하는 하나 이상의 임계치 또는 시간 제한을 포함할 수도 있다. 주기적으로 또는 임계치 기반으로 더티 페이지를 전송하는 결과로서, 도킹 해제시 전송되는 메모리 컨텐츠의 양은 감소된다. 시간에서의 이 감소는, 디바이스(305)의 유저가 인지불가능할 수도 있는 방식에서의 하나 이상의 애플리케이션의 실행의 디바이스(305)로의 역(back) 마이그레이션을 가능하게 할 수도 있다.
몇몇 예에서, 더티 페이지의 주기적 전송을 포함하는 라이트백 정책은, 재빠르게 도킹해제하는 것과 근거리 메모리(370)로부터 원거리 메모리(340)로 메모리 컨텐츠를 마이그레이션하여 전력을 보존하는 것의 필요성의 균형을 맞추는 시간 기간에 기초할 수도 있다. 예를 들면, 더티 페이지를 전송/수신하기 위해 사용되는 유선/무선 인터커넥트는, 시간 기간이 짧으면 상당한 양의 전력을 사용할 수도 있다. 더 긴 시간 기간은 더 에너지 효율적일 수도 있지만, 더 긴 시간 기간이 만료하기 직전에 도킹해제 이벤트가 발생하면, 메모리 컨텐츠의 마이그레이션은 지연될 수도 있고 유저는 이 지연을 인지할 수도 있다.
몇몇 예에 따르면, 임계치 기반으로 더티 페이지를 전송하는 것을 포함하는 라이트백 정책은 근거리 메모리(330)에 대한 메모리 용량에 기초한 제1 임계 개수(threshold number)를 포함할 수도 있다. 예를 들면, 근거리 메모리(330)가 근거리 메모리(370)와 비교하여 상대적으로 작은 메모리 용량을 가지면, 더티 페이지의 제1 임계 개수는, 근거리 메모리(330)의 더 작은 메모리 용량이 자신의 메모리 용량을 초과하지 않으면서 더티 페이지 전체를 수신할 수 있을 만큼 충분히 작아야 한다. 제1 임계 개수는 또한, 인지가능한 인터럽션이 없는 적시의 방식으로 하나 이상의 애플리케이션의 실행을 회로부(320)가 재개하는 것을 메모리 컨텐츠의 마이그레이션이 허용하는 것을 보장하기 위해, 유선/무선 인터커넥트를 통해 원거리 메모리(340)와 근거리 메모리(370) 사이에서 메모리 컨텐츠의 사본을 마이그레이션하기 위한 각각의 데이터 대역폭 및 레이턴시에 기초할 수도 있다. 이들 예의 경우, 데이터 대역폭이 더 낮고 메모리 컨텐츠를 마이그레이션하기 위한 레이턴시가 더 높을수록, 더티 페이지의 제1 임계 개수는 더 낮다.
몇몇 예에서, 라이트백 정책은, 유저 개시 도킹해제의 검출과 인터커넥트의 실제 디커플링 또는 종료의 시간까지의 사이의 도킹해제 응답 시간과 관련될 수도 있는 제2 임계 개수를 포함할 수도 있다. 이들 예의 경우, 제2 임계치는, 유선/무선 인터커넥트를 통해 원거리 메모리(340)와 근거리 메모리(370) 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 데이터 대역폭 성능에 기초할 수도 있다. 제2 임계치는 또한, 디바이스(305)로부터 디바이스(355)를 연결해제하는 것과 관련되는 시간 제한(예를 들면, 10분의 1초) 및 회로부(360)에 의한 하나 이상의 애플리케이션의 실행 동안 생성되는 더티 페이지와 관련되는 사이즈에 기초할 수도 있다. 예를 들면, 더 큰 사이즈의 더티 페이지는 더 낮은 제2 임계 개수로 나타날 것이다. 또한, 더 낮은 데이터 대역폭 및 더 높은 레이턴시는 더 낮은 제2 임계 개수로 또한 나타날 수도 있다.
몇몇 예에서, 메모리 체크포인팅은, 디바이스(355)에 있는 회로부(360)에 의해 실행되고 있는 하나 이상의 애플리케이션이 널리 공지된 상태 또는 복원 지점에 배치되는 에러 정정/복원 기술로서 사용될 수도 있다. 이들 예의 경우, 복원 지점은, 디바이스(355)에 대한 디바이스(305)의 예상치 않은/불시의 도킹해제의 경우에, 하나 이상의 애플리케이션이 알려진 상태로 복원되는 것을 가능하게 할 수도 있다. 인터커넥트 특성은, 임의의 순간에 안전하게 존재할 수도 있는 근거리 메모리(370)에서의 메모리 컨텐츠의 임계량을 정의할 수도 있는데, 그 임의의 순간 이전의 메모리 컨텐츠 데이터는, 예상치 않은 도킹 해제에 후속하여 복원 지점 또는 기지의 상태에 도달하기 위해, 적어도 원거리 메모리(340)에 다시 복제될 필요가 있다. 디바이스(305 및 355) 사이의 인터커넥트가, 아주 짧은 시간(예를 들면 100분의 1초 미만)에 근거리 메모리(370)로부터 메모리 컨텐츠를 복제할 수 있는 낮은 레이턴시, 고대역폭의 인터커넥트이면, 메모리 체크포인팅은 필요하지 않을 수도 있다. 그러나, 필요하다면, 메모리 체크포인팅은, 이용가능한 데이터 대역폭, 인터커넥트에 걸친 관측된 레이턴시, 또는 인터커넥트를 통해 근거리 메모리(370)와 적어도 원거리 메모리(340) 사이에서 메모리 컨텐츠를 마이그레이션하기 위한 할당된 전력 사용량 한계치와 같은 인터커넥트 특성에 기초하여 더티 페이지의 동적 임계 개수의 타입을 확립할 수도 있다.
몇몇 예에 따르면, 메모리 체크포인팅과 관련되는 더티 페이지의 동적 임계 개수는 원거리 메모리(340)에 대한 MC(346)의 기록 레이턴시에 또한 기초할 수도 있다. MC(346)가 상대적으로 긴 기록 레이턴시를 가지면, 더티 페이지의 임계 개수는 이 긴 기록 레이턴시를 수용하기 위해 더 낮아질 것이다. 더티 페이지의 동적 임계 개수는 또한, 근거리 메모리(370)로부터 데이터를 판독하기 위한 iMC(376)의 판독 레이턴시에 기초할 수도 있다. 예를 들면, 상대적으로 빠른 판독 레이턴시는 더티 페이지의 더 높은 임계 개수를 허용할 것이다. 메모리 체크포인팅에 대한 더티 페이지의 임계 개수를 설정하기 위한 상기 언급된 기준은 단지 몇몇의 예시적인 기준이며, 예는 상기 언급된 바로 그 기준에 제한되지는 않는다.
프로세스 5.9(파메모리로의 더티 페이지(들)를 수신)로 진행하면, 디바이스(305)에서의 로직 및/또는 피쳐는, 원거리 메모리(340)로의 하나 이상의 더티 페이지를 수신할 수도 있다. 하나 이상의 더티 페이지는, 근거리 메모리(370)에 유지되는 메모리 컨텐츠의 적어도 일부를 나타낼 수도 있고 라이트백 정책에 따라 또는 메모리 체크포인팅의 일부로서 전송될 수도 있다.
프로세스 5.10(근거리 메모리에 대한 페이지 누락)으로 진행하면, 회로부(360)는 하나 이상의 애플리케이션의 실행 동안, 근거리 메모리(370)로 마이그레이션되는 메모리 컨텐츠에 포함되지 않은 데이터를 요청할 수도 있다. 몇몇 예에서, 근거리 메모리(370)에서의 데이터의 부족은 페이지 누락으로 나타날 수도 있다. 이들 예의 경우, 데이터는 원거리 메모리(340)에 유지될 수도 있다.
프로세스 5.11(원거리 메모리로에 대한 메모리 액세스 요청)로 진행하면, iMC(376)과 같은 디바이스(355)에서의 로직 및/또는 피쳐는 메모리 액세스 요청을 생성하여 원거리 메모리(340)에 있는 MC(346)로 전송할 수도 있다. 몇몇 예에서, 메모리 액세스 요청은 페이지 누락에 응답하여 데이터를 획득하는 것일 수도 있다.
프로세스 5.12(메모리 액세스 요청을 이행)로 진행하면, MC(346)와 같은 디바이스(305)에서의 로직 및/또는 피쳐는, 페이지 누락과 관련되는 데이터를 제공하기 위해, 메모리 액세스 요청을 수신하여 그 요청을 수행할 수도 있다.
몇몇 예에서, 프로세스(500)의 적어도 프로세서 5.7 내지 5.12는, 디바이스(355)를 디바이스(305)로 연결하는 인터커넥트의 연결해제/종료까지 계속될 수도 있다. 하기에서 더 언급되는 바와 같이, 몇몇 예에서는, 하나 이상의 애플리케이션을 실행하기 위한 컨텍스트 정보 및 메모리 컨텐츠가 근거리 메모리(330)로 역 마이그레이션하는 것을 허용하기 위한 다른 일련의 프로세스가 디바이스(305 및 355)에서의 로직 및/또는 피쳐에 의해 구현될 수도 있다. 마이그레이션은 인터커넥트의 종료 이전에 발생할 수도 있다.
도 6은 예시적인 프로세스(600)를 예시한다. 몇몇 예에서, 프로세스(600)는 디바이스 사이에서 집성된 또는 구성된 메모리 리소스를 도킹해제하거나 또는 연결해제하는 것에 대한 것일 수도 있다. 이들 예의 경우, 도 3에서 도시되는 바와 같은 시스템(300)의 엘리먼트가 프로세스(600)에 관련되는 예시적인 동작을 예시하기 위해 사용될 수도 있다. 또한, 프로세스(600)는, 도 5에 관해 상기에서 설명되는 바와 같은 메모리 리소스의 집성 또는 구성에 후속하는 프로세스(500)의 계속일 수도 있다. 그러나, 예시적인 프로세스 또는 동작은, 시스템(300)의 엘리먼트를 사용하는 구현예에 또는 프로세스(500)의 계속으로 제한되지 않는다.
프로세스 6.0(애플리케이션(들)을 실행)에서 시작하면, 디바이스(355)의 회로부(360)는, 프로세스(500)에 관해 상기에서 언급된 바와 같은 도킹 이전에, 디바이스(305)의 회로부(320)에 의해 이전에 실행되었던 하나 이상의 애플리케이션을 실행하고 있을 수도 있다.
프로세스 6.1(도킹해제 검출)로 진행하면, 디바이스(355)에서의 로직 및/또는 피쳐는, 디바이스(305)에 대한 연결이 종료될 것이라는 표시를 검출하거나 수신할 수도 있다. 몇몇 예에서, 연결이 유선 인터커넥트를 통하고 있으면, 그 검출은, 유저가 표시를 입력하는 것에 의해 표시를 야기하고/하거나 독으로부터 디바이스를 물리적으로 제거하거나 또는 유선 인터커넥트에 대한 커넥터(예를 들면, 동글)를 분리하는(unplugging) 것에 기초할 수도 있다. 다른 예에서, 연결이 무선 인터커넥트를 통하고 있으면, 그 검출은, 무선 인터커넥트가 곧 연결해제될 것이거나 또는 무선 인터커넥트를 유지하는 수용가능한 범위 밖으로 나갈 것이라는 것을 나타내는 방식으로, 디바이스(355)로부터 멀어지는 방향에서의 디바이스(305)의 움직임을 유저가 개시하는 것에 기초할 수도 있다.
프로세스 6.2(회로부, 근거리 메모리의 전력을 높임)로 진행하면, 디바이스(305)에서의 로직 및/또는 피쳐는 도킹해제를 예상하여 회로부(320) 및 근거리 메모리(330)의 전력을 높일(power up) 수도 있다. 몇몇 예에서, 프로세스(500)에 대해 상기 언급된 바와 같이, 라이트백 정책은, 회로부(360)에 의한 하나 이상의 애플리케이션의 실행 동안 근거리 메모리(370)에 유지되는 메모리 컨텐츠의 적어도 일부가 주기적으로 디바이스(305)로 전송되게 하고 원거리 메모리(340)에 저장되게 했을 수도 있다. 이들 경우, 이들 이전에 전송된 더티 페이지는, 회로부(320)가 보다 시간 효율적인 방식으로 하나 이상의 애플리케이션을 실행하는 것을 가능하게 하기 위해 마이그레이션될 필요가 있을 수도 있는 총 복제된 메모리 컨텐츠의 양을 감소시키기 위해, 최초 전력 인가시 근거리 메모리(330)에 복제될 수도 있다.
프로세스 6.3(컨텍스트 정보를 플러싱, 회로부를 비활성화)으로 진행하면, 디바이스(355)에서의 로직 및/또는 피쳐는, 하나 이상의 애플리케이션을 실행하기 위해 사용되는 컨텍스트 정보로 하여금 근거리 메모리(370)로부터 플러싱되게 할 수도 있다. 그 다음, 로직 및/또는 피쳐는 회로부(360)를 비활성화할 수도 있다.
프로세스 6.4(인터커넥트를 통해 컨텍스트 정보, 메모리 컨텐츠의 제2 사본을 전송)로 진행하면, 디바이스(355)에서의 로직 및/또는 피쳐는 플러싱된 컨텍스트 정보 및 메모리 컨텐츠의 제2 사본으로 하여금 인터커넥트를 통해 디바이스(305)로 전송되게 할 수도 있다. 몇몇 예에서, 컨텍스트 정보 및 메모리 컨텐츠의 제2 사본은 원거리 메모리(340)에서 수신될 수도 있다. 이들 예의 경우, 프로세스 6.2에 대해 상기에서 언급된 바와 같이, 근거리 메모리(370)에서 이전에 유지된 메모리 컨텐츠의 다른 부분은, 디바이스(355)와 디바이스(305) 사이에서의 메모리 컨텐츠의 적시의 마이그레이션을 용이하게 하기 위해 라이트백 정책의 일부로서 전송되었을 수도 있다. 라이트백 정책의 일부로서 이전에 전송되지 않은 부분은 이제 메모리 컨텐츠의 제2 사본과 함께 전송되어 인터커넥트를 통해 더 적은 데이터가 전송되는 것을 허용할 수도 있다. 프로세스 6.5(회로부, 근거리 메모리의 전력을 낮춤)로 진행하면, 디바이스(355)에서의 로직 및/또는 피쳐는 회로부(360) 및 근거리 메모리(370) 둘 다의 전력을 낮출 수도 있다.
프로세스 6.5(근거리 메모리로의 컨텍스트 정보, 메모리 컨텐츠의 제2 사본을 수신)으로 진행하면, 디바이스(305)에서의 로직 및/또는 피쳐는, 원거리 메모리(340)로의 컨텍스트 정보 및 메모리 컨텐츠의 제2 사본을 수신할 수도 있다.
프로세스 6.6(컨텍스트 정보, 메모리 컨텐츠의 제2 사본을 근거리 메모리에 저장)으로 진행하면, 디바이스(305)의 로직 및/또는 피쳐는 컨텍스트 정보 및 메모리 컨텐츠의 제2 사본을 근거리 메모리(330)로 저장할 수도 있다. 몇몇 예에서, 근거리 메모리(330)는 근거리 메모리(370)보다 더 작은 메모리 용량을 가질 수도 있다. 이들 예의 경우, 메모리 컨텐츠의 제2 사본의 적어도 일부는 메모리 페이징 정책에 기초하여 근거리 메모리(330)에 저장될 수도 있다. 메모리 페이징 정책은, 하나 이상의 애플리케이션을 실행하는 동안 회로부(360)에 의해 액티브하게 사용되었던 메모리 페이지를 저장할 수도 있다. 메모리 페이징 정책은 또한, 주어진 메모리 페이지와 관련되는 수명(age)에 기초하여 저장하는 것을 포함할 수도 있는데, 예를 들면, 메모리 페이지에 더 최근에 기록된 것이 먼저 저장되거나 또는 제한된 근거리 메모리(330) 용량에 대해 우선순위를 갖는다. 메모리 페이징 정책은 또한, 우선순위 방식과 관련될 수도 있거나 또는 어떤 메모리 페이지가 가장 최근에 액세스되었었는지를 나타낼 수도 있는 메모리 페이지와 관련되는 액세스 패턴에 기초하여 저장하는 것을 또한 포함할 수도 있다. 예는 상기 언급된 메모리 페이징 정책으로 제한되지 않으며, 메모리 컨텐츠의 제2 사본으로부터 어떤 메모리 페이지가 근거리 메모리로 복제될 것인지에 우선순위를 매기는 다른 정책이 고려된다.
프로세스 6.7(애플리케이션(들)을 실행)으로 진행하면, 디바이스(305)에 있는 회로부(320)는, 하나 이상의 애플리케이션의 실행을 재개하기 위해, 컨텍스트 정보 및 이제 근거리 메모리(330)에 저장된 메모리 컨텐츠의 제2 사본의 일부를 사용할 수도 있다.
프로세스 6.8(도킹해제를 종료)로 진행하면, 디바이스(305 및 355) 둘 다에서의 로직 및/또는 피쳐는, 인터커넥트를 통한 연결을 종료하는 것에 의해 도킹해제를 완료하고 프로세스(600)는 종료에 도달한다.
도 7은 메모리 체크포인팅에 대한 예시적인 로직 플로우(700)를 예시한다. 몇몇 예에서, 로직 플로우(700)는, 디바이스(305)에 대한 도킹 및 하나 이상의 애플리케이션의 실행의 디바이스(355)의 회로부(360)로의 마이그레이션에 후속하여 도 3에 대해 상기에서 설명된 바와 같은 시스템(300)의 디바이스(355)에 의해 구현될 수도 있다. 또한, 다른 컴포넌트 또는 시스템(300)의 엘리먼트는, 로직 플로우(700)에 관련되는 예시적인 프로세스를 예시하기 위해 사용될 수도 있다. 그러나, 예시적인 프로세스 또는 동작은 시스템(300)의 엘리먼트를 사용하는 구현예로 제한되는 것은 아니다.
시작에서 결정 블록 710(도킹해제 이벤트인가?)으로 이동하면, 디바이스(355)에서의 로직 및/또는 피쳐는 도킹해제 이벤트가 발생했는지의 여부를 결정한다. 몇몇 예에서, 도킹해제 이벤트는, 도킹해제가 발생하려고 한다는 표시를 수신하거나 또는 검출하는 것에 기초할 수도 있다. 도킹해제의 표시가 수신되거나 또는 검출되면, 프로세스는 블록 740으로 이동한다. 그렇지 않으면, 프로세스는 블록 720으로 이동한다.
결정 블록 710으로부터 블록 720(애플리케이션(들)을 실행)으로 이동하면, 회로부(360)는 하나 이상의 애플리케이션을 실행할 수도 있다. 하나 이상의 애플리케이션의 실행 동안, 프로세스는 결정 블록(730) 또는 결정 블록(750) 중 어느 하나로 이동할 수도 있다.
블록 720으로부터 결정 블록 730(MT 도달?)으로 진행하면, 디바이스(355)에서의 로직 및/또는 피쳐는, "MT"로 칭해지는 더티 페이지의 임계 개수가 도달했는지의 여부를 결정할 수도 있다. 몇몇 예에서, MT는 이용가능한 데이터 대역폭, 관측된 레이턴시, 또는 디바이스(355)를 디바이스(305)에 연결하는 유선 또는 무선 인터커넥트를 통해 근거리 메모리(370)와 적어도 원거리 메모리(340) 사이에서 메모리 컨텐츠의 사본을 마이그레이션하기 위한 할당된 전력 사용량 한계치와 같은 인터커넥트 특성에 기초할 수도 있다. MT는 또한, 원거리 메모리(340)에 대한 MC(346)의 기록 레이턴시 및 근거리 메모리(370)로부터의 iMC 판독 레이턴시에 기초할 수도 있다. 이들 예의 경우, MT는, 디바이스(355)에 있는 회로부(360)에 의한 하나 이상의 애플리케이션의 실행 동안, 더티 페이지 또는 데이터가 디바이스(305)에 복제될 필요가 있는 빈도에 영향을 끼칠 수도 있다. MC(346)의 기록 레이턴시 및 iMC(376)의 판독 레이턴시가 정적이거나 고정될 수도 있기 때문에, MT에 대한 동적 임계 개수는, 인터커넥트 특성(이동하는 오브젝트, 간섭, 비, 습도 등등)이 변할 수도 있다는 점에서, 여전히 필요로 될 수도 있다. MT가 도달되거나 또는 초과되면, 프로세스는 블록 740으로 이동한다. 그렇지 않다면, 프로세스는 결정 블록 710으로 리턴한다.
결정 블록 710 또는 결정 블록 730 중 어느 하나로부터 블록 740(체크포인트 컨텐츠를 디바이스(305)로 전송)으로 이동하면, 디바이스(355)의 로직 및/또는 피쳐는, 하나 이상의 더티 페이지를 포함할 수도 있는 메모리 체크포인트 컨텐츠를 디바이스(305)에 있는 적어도 원거리 메모리(340)로 전송할 수도 있다. 프로세스가 결정 블록 710으로부터 이동되었다면, 하나 이상의 애플리케이션의 실행이 디바이스(305)로 시프트하거나 또는 디바이스(305)로 역 마이그레이션하고 회로부(360) 및 근거리 메모리(370)가 전력이 낮춰짐에 따라, 프로세스는 종료하게 될 수도 있다. 프로세스가 결정 블록 730으로부터 이동되었다면, 프로세스는 결정 블록 710으로 이동한다.
블록 720으로부터 결정 블록 750(페이지 누락?)으로 이동하면, 디바이스(355)에서의 로직 및/또는 피쳐는, 회로부(360)에 의한 하나 이상의 애플리케이션의 실행 동안 근거리 메모리(370)에 대해 페이지 누락이 발생했는지를 결정할 수도 있다. 몇몇 예에서, iMC(376)가 이 결정을 행할 수도 있다. 페이지 누락이 발생하면, 프로세스는 결정 블록 760으로 이동한다. 그렇지 않다면, 프로세스는 결정 블록 710으로 리턴한다.
결정 블록 750으로부터 결정 블록 760(더티 페이지 존재?)으로 이동하면, 디바이스(355)에서의 로직 및/또는 피쳐는, 임의의 더티 페이지가 존재하고/하거나, 디바이스(305)에 있는 적어도 원거리 메모리(340)로 전송할 준비가 될 수도 있는지를 결정할 수도 있다. 몇몇 예에서, 더티 페이지와 같은 데이터의 복제는, 전력 사용량 및 디바이스(355) 또는 디바이스(305)에 대한 가능한 성능 누수의 관점에서 고가의 동작일 수도 있다. 따라서, 더티 페이지의 복제의 빈도를 감소시키기 위해, 근거리 메모리(370)에 대한 페이지 누락이 발생할 때마다, 근거리 메모리(370)에 존재하는 모든 더티 페이지가, 디바이스(305)에 있는 적어도 원거리 메모리(340)에 복제될 수도 있는 기술이 구현될 수도 있다. 이것은, MT와 같은 다른 임계치가 아직 도달하지 않았거나 또는 초과되지 않았더라도, 발생할 수도 있다. 그러므로, 페이지 누락시 더티 페이지를 기회주의적으로(opportunistically) 복제하는 것에 의해, 인터커넥트 대역폭이 더 잘 활용될 수도 있고 소비 전력이 또한 감소될 수도 있다. 무선 인터커넥트의 경우, 더 작은 양의 데이터를 더 빈번하게 하는 것과 비교하여 더 큰 양의 데이터를 덜 빈번하게 전송하기 위해 무선 활용도가 더 최적화될 수도 있기 때문에, 더티 페이지의 기회주의적 복제는 상당히 유익할 수도 있다. 더티 페이지가 존재하면, 프로세스는 블록 770으로 이동한다. 그렇지 않다면, 프로세스는 블록 780으로 이동한다.
결정 블록 760으로부터 블록 770(메모리 요청 및 더티 페이지(들)를 디바이스(305)로 전송)으로 이동하면, 디바이스(355)에서의 로직 및/또는 피쳐는 임의의 더티 페이지 및 페이지 누락에 대한 메모리 요청이 디바이스(305)로 전송되게 할 수도 있다. 몇몇 예에서, 원거리 메모리(340)에 대한 MC(346)는 메모리 요청을 수신하고 또한 더티 페이지가 적어도 원거리 메모리(340)에 저장되게 할 수도 있다. 이들 예의 경우, MC(346)는 또한, 메모리 요청과 관련되는 데이터로 하여금 원거리 메모리(340)로부터 획득되게 하고 디바이스(355)로 전송되게 하고 근거리 메모리(370)에 복제되게 하는 것에 의해, 메모리 요청을 이행할 수도 있다. 그 다음, 프로세스는 결정 블록 710으로 이동한다.
결정 블록 760으로부터 결정 블록 780(메모리 요청을 디바이스(305)로 전송)으로 이동하면, 디바이스(355)에서의 로직 및/또는 피쳐는 단지 페이지 누락에 대한 메모리 요청이 디바이스(305)로 전송되게 할 수도 있다. 몇몇 예에서, 결정 블록 770에 대해 상기에서 언급된 바와 같이, 원거리 메모리(340)에 대한 MC(346)는 메모리 요청을 수신할 수도 있고, 메모리 요청과 관련되는 데이터로 하여금 원거리 메모리(340)로부터 획득되게 하고 디바이스(355)로 전송되게 하고 근거리 메모리(370)로 복제되게 하는 것에 의해, 메모리 요청을 이행할 수도 있다. 그 다음, 프로세스는 결정 블록 710으로 이동한다.
도 8은 제1 장치에 대한 블록도를 예시한다. 도 8에서 도시되는 바와 같이, 제1 장치는 장치(800)를 포함한다. 도 8에서 도시되는 장치(800)가 소정의 토폴로지 또는 구성에서 제한된 수의 엘리먼트를 구비하지만, 소정의 구현예에 대해 소망되는 바와 같은 대안적인 구성에서, 장치(800)는 더 많은 또는 더 적은 엘리먼트를 포함할 수도 있다는 것을 알 수도 있을 것이다. 장치(800)는, 펌웨어 구현될 수도 있고 하나 이상의 로직(822-a)을 실행하도록 정렬되는 프로세서 회로(820)를 구비할 수도 있는 컴퓨팅 디바이스의 컴포넌트를 포함할 수도 있다. 본원에서 사용되는 바와 같은 "a" 및 "b" 및 "c" 및 유사한 지정자(designator)는 임의의 양의 정수를 나타내는 변수이도록 의도된다는 것을 주목할 만하다. 따라서, 예를 들면, 구현예가 a=5에 대한 값을 설정하면, 로직(822-a)의 완전한 세트는 822-1, 822-2, 822-3, 822-4 또는 822-5를 포함할 수도 있다. 예는 이 컨텍스트에서 제한되지 않는다.
몇몇 예에 따르면, 장치(800)는, 제1 근거리 메모리 및 제2 원거리 메모리를 포함하는 2LM 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제1 회로부를 구비하는 제1 장치(예를 들면, 디바이스(105, 205 또는 305))의 일부일 수도 있다. 예는 이 컨텍스트에서 제한되지 않는다.
몇몇 예에서, 도 8에서 도시되는 바와 같이, 장치(800)는 프로세서 회로(820)를 포함한다. 프로세서 회로(820)는 일반적으로 하나 이상의 로직(822-a)을 실행하도록 정렬될 수도 있다. 프로세서 회로(820)는, AMD® Athlon®, Duron® 및 Opteron® processors; ARM® 애플리케이션, 임베딩된 보안 프로세서; IBM® 및 Motorola® DragonBall® 및 PowerPC® 프로세서; IBM 및 Sony® 셀 프로세서(Cell processor); Qualcomm® Snapdragon®; Intel® Celeron®, Core (2) Duo®, Core i3, Core i5, Core i7, Itanium®, Pentium®, Xeon®, Atom® 및 XScale® 프로세서; 및 유사한 프로세서를 비제한적으로 포함하는 다양한 상업적으로 입수가능한 프로세서 중 임의의 것일 수 있다. 프로세서 회로(820)로서, 듀얼 마이크로프로세서, 멀티코어 프로세서, 및 다른 멀티 프로세서 아키텍처가 또한 활용될 수도 있다. 몇몇 예에 따르면, 프로세서 회로(820)는 또한 주문형 반도체(application specific integrated circuit; ASIC)일 수도 있고 로직(822-a)은 ASIC의 하드웨어 엘리먼트로서 구현될 수도 있다.
몇몇 예에 따르면, 장치(800)는 검출 로직(822-1)을 포함할 수도 있다. 검출 로직(822-1)은, 제2 근거리 메모리를 또한 포함하는 2LM 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제2 회로부를 검출하도록, 프로세서 회로(820)에 의해 실행될 수도 있다. 예를 들면, 검출 로직(822-1)은, 제2 회로부 및 제2 근거리 메모리를 구비하는 제2 디바이스가 유선 또는 무선 통신 채널 중 어느 하나를 통해 제1 디바이스에 연결되었다는 것을 나타낼 수도 있는 정보(805)를 검출할 수도 있다.
몇몇 예에서, 장치(800)는 연결 로직(822-2)을 또한 포함할 수도 있다. 연결 로직(822-2)은, 인터커넥트를 통해 제1 원거리 메모리와 제2 근거리 메모리 사이에서 디바이스 연결을 야기하도록, 프로세서 회로(820)에 의해 실행될 수도 있다. 예를 들면, 연결 로직(822-2)은, 하나 이상의 낮은 레이턴시, 고대역폭 및 효율적인 인터커넥트 기술 예컨대 PCIe, QPI, WiGig 또는 Wi-Fi에 따라 동작할 수도 있는 인터커넥트를 통해 연결될 수도 있다. 몇몇 예에 따르면, 장치(800)는 마이그레이션 로직(822-3)을 또한 포함할 수도 있다.
마이그레이션 로직(822-3)은, 메모리 컨텐츠의 사본(825)이 제1 디바이스에서 유지되는 제1 근거리 메모리로부터 제2 근거리 메모리로 마이그레이션되도록 하기 위해 제1 원거리 메모리를 활용하도록, 프로세서 회로(820)에 의해 실행될 수도 있다. 메모리 컨텐츠의 사본(825)은, 제1 디바이스 또는 제2 디바이스에 대한 OS에 대해 투명한 방식으로 마이그레이션될 수도 있다. 몇몇 예에서, 마이그레이션 로직(822-3)은 또한, 도킹해제의 경우에 제2 디바이스로부터 수신되는 메모리 컨텐츠의 사본(845)의 적어도 일부의 저장을 용이하게 할 수도 있다. 메모리 컨텐츠의 사본(845)의 적어도 일부는 페이징 정책(724-a)에 따라 저장될 수도 있다. 페이징 정책(724-a)은 룩업 테이블(lookup table; LUT)과 같은 데이터 구조에서 마이그레이션 로직(822-3)에 의해 유지될 수도 있다.
몇몇 예에서, 마이그레이션 로직(822-3)은 제2 근거리 메모리로부터 메모리 컨텐츠(845)의 적어도 일부를 수신할 수도 있다. 메모리 컨텐츠(845)의 적어도 일부는 더티 페이지(들)(810)를 포함할 수도 있다. 더티 페이지(들)(810)는 제2 회로부에 의한 하나 이상의 애플리케이션의 실행 동안 생성되었을 수도 있다. 이들 예의 경우, 마이그레이션 로직(822-3)은 더티 페이지(들)(810)가 적어도 제1 원거리 메모리에 저장되게 할 수도 있다.
몇몇 예에 따르면, 장치(800)는 요청 로직(822-4)을 포함할 수도 있다. 요청 로직(822-4)은, 제2 근거리 메모리에 대한 페이지 누락에 기초하여 제1 원거리 메모리에 대한 메모리 액세스 요청을 포함할 수도 있는 메모리 요청(835)을 수신하도록, 프로세서 회로부에 의해 실행될 수도 있다. 이들 예의 경우, 요청 로직(822-4)은, 페이지 누락과 관련되는 데이터를 원거리 메모리 응답(840)에서 제공하기 위해, 메모리 요청(835)에 포함되는 메모리 액세스 요청이 이행되게 할 수도 있다.
몇몇 예에 따르면, 장치(800)는 전력 로직(822-5)을 포함할 수도 있다. 전력 로직(822-5)은, 제1 회로부 및 제1 근거리 메모리의 전력이 낮춰지게 되거나 또는 전력이 높아지게 되도록, 프로세서 회로(820)에 의해 실행될 수도 있다. 예를 들면, 제1 회로부 및 제1 근거리 메모리는, 컨텍스트 정보 및 메모리 컨텐츠의 사본(825)의 제2 디바이스의 전송에 후속하여, 더 낮은 전력 상태로 전력이 낮춰질 수도 있다. 계속해서, 제1 회로부 및 제1 근거리 메모리는, 제1 디바이스와 제2 디바이스 사이의 인터커넥트가 종료되려고 한다는 표시에 후속하여, 더 높은 전력 상태로 전력이 상승될 수도 있다. 표시는, 연결 정보(815)(예를 들면, 유저 입력 정보 또는 무선 범위 검출)에 포함될 수도 있다.
개시된 아키텍처의 신규의 양태를 수행하기 위한 예시적인 방법론을 대표하는 로직 플로우의 세트가 본원에서 포함된다. 설명의 간이성의 목적을 위해, 본원에서 나타내어지는 하나 이상의 방법론이 일련의 액트로서 나타내어지고 설명되지만, 기술분야의 숙련된 자는 방법론이 액트의 순서에 의해 제한되지 않는다는 것을 이해하고 알 것이다. 이에 응하여, 몇몇 액트는 상이한 순서로 및/또는 본원에서 나타내어지고 설명되는 것으로부터의 다른 액트와 동시에 발생할 수도 있다. 당업자들은, 방법이 상태도(state diagram) 같은 일련의 상호 관련 상태들 또는 이벤트들로서 대안적으로 표현될 수도 있음을 이해하고 알 수 있을 것이다. 또한, 방법론에서 예시되는 모든 액트가 신규의 구현예에 대해 요구되는 것은 아닐 수도 있다.
로직 플로우는 소프트웨어, 펌웨어, 및/또는 하드웨어로 구현될 수도 있다. 소프트웨어 및 펌웨어 실시형태에서, 로직 플로우는, 광학적, 자기적 또는 반도체 스토리지와 같은 적어도 하나의 비일시적 컴퓨터 판독가능 매체 또는 머신 판독가능 매체 상에 저장되는 컴퓨터 실행가능 명령어에 의해 구현될 수도 있다. 실시형태는 이러한 컨텍스트에 제한되지는 않는다.
도 9는 제1 로직 플로우를 예시한다. 도 9에서 도시되는 바와 같이, 제1 로직 플로우는 로직 플로우(900)를 포함한다. 로직 플로우(900)는, 본원에서 설명되는 하나 이상의 로직, 피쳐, 또는 디바이스, 예컨대 장치(900)에 의해 실행되는 동작 중 일부 또는 전체를 대표할 수도 있다. 특히, 로직 플로우(900)는 검출 로직(822-1), 연결 로직(822-2), 마이그레이션 로직(822-3), 요청 로직(822-4) 또는 전력 로직(822-5)에 의해 구현될 수도 있다.
도 9에서 도시되는 예시된 예에서, 로직 플로우(900)는 블록 902에서 하나 이상의 애플리케이션을 제1 회로부 상에서 실행할 수도 있다. 제1 회로부는, 제1 근거리 메모리 및 제1 원거리 메모리를 포함하는 2LM 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수도 있다.
몇몇 예에 따르면, 로직 플로우(900)는 블록 904에서, 제2 근거리 메모리를 또한 포함하는 2LM 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제2 회로부를 검출할 수도 있다. 이들 예의 경우, 검출 로직(822-1)은 제2 회로부를 검출할 수도 있다.
몇몇 예에서, 로직 플로우(900)는 블록 906에서, 제1 원거리 메모리를 제2 근거리 메모리에 연결할 수도 있다. 이들 예의 경우, 연결 로직(822-2)은 인터커넥트를 통한 연결이, 유선 또는 무선 통신 채널을 통해 확립되게 할 수도 있다. 몇몇 예에 따르면, 로직 플로우(900)는, 블록 908에서, 제1 근거리 메모리로부터의 메모리 컨텐츠의 사본을 제2 근거리 메모리로 마이그레이션되도록 하기 위해 제1 원거리 메모리를 활용할 수도 있다. 메모리 컨텐츠의 사본은, 오퍼레이팅 시스템에 투명한 방식으로 마이그레이션될 수도 있다. 이들 예의 경우, 마이그레이션 로직(822-3)은 메모리 컨텐츠의 사본이 제2 근거리 메모리로 마이그레이션되게 할 수도 있다.
몇몇 예에서, 로직 플로우(900)는, 블록 910에서, 제1 근거리 메모리의 메모리 컨텐츠의 사본의 제2 근거리 메모리로의 마이그레이션에 후속하여, 제1 회로부 및 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮출 수도 있다. 이들 예의 경우, 전력 로직(822-5)은 제1 회로부 및 제1 근거리 메모리의 전력이 낮아지게 할 수도 있다.
몇몇 예에 따르면, 로직 플로우(900)는 블록 912에서 제1 원거리 메모리에 전력을 계속 인가할 수도 있다. 이들 예의 경우, 전력 로직(822-5)은 제1 원거리 메모리로 전력 인가가 계속되게 할 수도 있다.
도 10은 제1 저장 매체의 한 실시형태를 예시한다. 도 10에서 도시되는 바와 같이, 제1 저장 매체는 저장 매체(1000)를 포함한다. 저장 매체(1000)는 제조 물품을 포함할 수도 있다. 몇몇 예에서, 저장 매체(1000)는 임의의 비일시적 컴퓨터 판독가능 매체 또는 머신 판독가능 매체, 예컨대 광학적, 자기적 또는 반도체 스토리지를 포함할 수도 있다. 저장 매체(1000)는 다양한 타입의 컴퓨터 실행가능 명령어, 예컨대 로직 플로우(900)를 구현하기 위한 명령어를 저장할 수도 있다. 컴퓨터 판독가능 또는 머신 판독가능 저장 매체의 예는, 휘발성 메모리 또는 불휘발성 메모리, 착탈식 또는 비착탈식 메모리, 소거가능 또는 소거불가능 메모리, 기록가능 또는 기록불가능 메모리 등등을 포함하는, 전자 데이터를 저장할 수 있는 임의의 유형의(tangible) 매체를 포함할 수도 있다. 컴퓨터 실행가능 명령어의 예는, 임의의 적절한 타입의 코드, 예컨대 소스 코드, 컴파일형 코드, 인터프리트형 코드, 실행파일형 코드, 정적 코드, 동적 코드, 객체 지향 코드, 비주얼 코드 등등을 포함할 수도 있다. 예는 이 컨텍스트에서 제한되지 않는다.
도 11은 제2 장치에 대한 블록도를 예시한다. 도 11에서 도시되는 바와 같이, 제2 장치는 장치(1100)를 포함한다. 도 11에서 도시되는 장치(1100)가 소정의 토폴로지 또는 구성에서 제한된 수의 엘리먼트를 구비하지만, 소정의 구현예에 대해 소망되는 바와 같은 대안적인 구성에서, 장치(1100)는 더 많은 또는 더 적은 엘리먼트를 포함할 수도 있다는 것을 알 수도 있을 것이다.
장치(1100)는, 펌웨어 구현될 수도 있고 하나 이상의 로직(1122-a)을 실행하도록 정렬되는 프로세서 회로(1120)를 구비할 수도 있는 컴퓨팅 디바이스의 컴포넌트를 포함할 수도 있다. 도 8에 대한 장치(800)와 마찬가지로, "a" 및 "b" 및 "c" 및 유사한 지정자는 임의의 양의 정수를 나타내는 변수일 수도 있다.
몇몇 예에 따르면, 장치(1000)는, 근거리 메모리 및 원거리 메모리를 포함하는 2LM 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제1 회로부를 구비하는 제1 장치(예를 들면, 디바이스(155, 255 또는 355))의 일부일 수도 있다. 예는 이 컨텍스트에서 제한되지 않는다.
몇몇 예에서, 도 11에서 도시되는 바와 같이, 장치(1100)는 프로세서 회로(1120)를 포함한다.
프로세서 회로(1120)는 일반적으로 하나 이상의 로직(1122-a)을 실행하도록 정렬될 수도 있다.
프로세서 회로(1120)는, 장치(800)에 대한 프로세서 회로(820)에 대해 이전에 언급된 것과 같은 것을 포함하는 그러나 이들로 제한되지 않는 다양한 상업적으로 입수가능한 프로세서 중 임의의 것일 수 있다. 듀얼 마이크로프로세서, 멀티코어 프로세서, 및 다른 멀티 프로세서 아키텍처가 또한 프로세서 회로(1120)로서 활용될 수도 있다. 몇몇 예에 따르면, 프로세서 회로(1120)는 또한 주문형 반도체(ASIC)일 수도 있고 로직(1122-a)은 ASIC의 하드웨어 엘리먼트로서 구현될 수도 있다.
몇몇 예에 따르면, 장치(1100)는 검출 로직(1122-1)을 포함할 수도 있다. 검출 로직(1122-1)은, 2LM 아키텍처에 포함되는 제2 근거리 메모리에 대한 연결의 표시를 검출하도록, 프로세서 회로(1120)에 의해 실행될 수도 있다. 제2 근거리 메모리는, 제2 회로부에 의해 실행될 때 하나 이상의 애플리케이션에 의해 사용될 수도 있다. 예를 들면, 검출 로직(1122-1)은, 유선 또는 무선 통신 채널을 통해 제2 회로부에 대한 연결을 나타낼 수도 있는 검출 정보(1105)를 수신할 수도 있다.
몇몇 예에서, 장치(1100)는 복제 로직(1122-2)을 또한 포함할 수도 있다. 복제 로직(1122-2)은, 제1 원거리 메모리로부터, 하나 이상의 애플리케이션을 실행하기 위해 제2 회로부에 의해 사용되는 제2 근거리 메모리로부터 전송되는 메모리 컨텐츠의 사본(1110)을 수신하도록 프로세서 회로(1120)에 의해 실행될 수도 있다. 복제 로직(1122-2)은, OS에 대해 투명한 방식으로, 메모리 컨텐츠의 사본(1110)을 제1 근거리 메모리에 저장할 수도 있다. 메모리 컨텐츠의 사본(1110)은, 하나 이상의 애플리케이션을 실행하기 위한 제1 회로부에 의한 사용을 위해, 제1 근거리 메모리에 저장될 수도 있다.
몇몇 예에서, 장치(1100)는 요청 로직(1122-3)을 또한 포함할 수도 있다. 요청 로직(1122-3)은, 제1 근거리 메모리에 대한 페이지 누락 표시를 수신하도록 프로세서 회로(1120)에 의해 실행될 수도 있다. 페이지 누락은 제1 원거리 메모리에 유지되는 데이터와 관련될 수도 있다.
페이지 누락 요청에 응답하여, 로직(1122-3)은, 데이터를 획득하기 위해, 원거리 메모리 요청(1035)에 포함되는 메모리 액세스 요청을 제1 원거리 메모리로 전송할 수도 있다. 그 다음, 요청 로직(1122-3)은 원거리 메모리 응답(1140)에 포함되는 원거리 메모리 응답에서 제1 원거리 메모리로부터 데이터를 수신하고 그 다음 수신된 데이터의 제1 근거리 메모리로의 복제를 야기할 수도 있다. 몇몇 예에 따르면, 장치(1100)는 라이트백 로직(1122-4)을 또한 포함할 수도 있다.
라이트백 로직(1122-4)은, 제1 근거리 메모리로부터, 메모리 컨텐츠의 적어도 일부를 제1 원거리 메모리로 전송하도록, 프로세서 회로(1120)에 의해 실행될 수도 있다. 메모리 컨텐츠의 적어도 일부는, 제1 회로부에 의한 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지를 구비하는 더티 페이지(들)(1125)를 포함할 수도 있다. 이들 예의 경우, 라이트백 로직(1122-4)은 라이트백 정책(1124-a)을, 예를 들면, LUT와 같은 데이터 구조에서 유지할 수도 있다. 라이트백 정책(1124-a)은, 제1 근거리 메모리에 유지되는 더티 페이지의 제1 또는 제2 임계 개수 중 하나 이상이 초과되는 것에 기초하여 또는 더티 페이지가 제1 근거리 메모리에 유지될 수도 있는 임계 시간이 초과되는 것에 기초하여, 더티 페이지(들)(1125)를 제1 원거리 메모리로 전송하도록 라이트백 로직(1122-4)에게 지시할 수도 있다.
몇몇 예에서, 라이트백 로직(1122-4)은 또한, 메모리 체크포인팅에 기초하여, 메모리 컨텐츠의 적어도 일부가 적어도 제1 원거리 메모리에 다시 기록되게 할 수도 있다. 상기에서 언급된 바와 같이, 메모리 체크포인팅은 더티 페이지의 동적 임계 개수(예를 들면, MT)와 관련될 수도 있다. 일단 더티 페이지의 동적 임계 개수가 초과되면, 라이트백 로직(1122-4)은, 하나 이상의 더티 페이지를 포함할 수도 있는 더티 페이지(들)(1125)를 전송할 수도 있다.
몇몇 예에서, 장치(1100)는 마이그레이션 로직(1122-5)을 또한 포함할 수도 있다. 마이그레이션 로직(1122-5)은, 메모리 컨텐츠의 사본(1145)을 제1 근거리 메모리로부터 적어도 제1 원거리 메모리로 전송하여 메모리 컨텐츠의 사본(1145)의 적어도 일부의 제2 근거리 메모리로의 마이그레이션을 가능하게 하도록, 프로세서 회로(1120)에 의해 실행될 수도 있다. 몇몇 예에서, 메모리 컨텐츠의 사본(1145)은, 제2 디바이스로의 연결이 종료되려고 했다는 표시 또는 도킹해제의 검출에 응답하여 전송될 수도 있다. 이 정보는 연결 정보(1115)에서 수신될 수도 있다.
몇몇 예에서, 장치(1100)는 전력 로직(1122-6)을 또한 포함할 수도 있다. 전력 로직(1122-6)은, 제1 디바이스에 있는 제1 회로부 및 제1 근거리 메모리의 전력을 낮추거나 또는 높이도록, 프로세서 회로(1120)에 의해 실행될 수도 있다. 예를 들면, 제1 회로부 및 제1 근거리 메모리는, 플러싱된 컨텍스트 정보 및 메모리 컨텐츠의 사본(1145)의 제2 디바이스의 전송에 후속하여, 더 낮은 전력 상태로 전력이 낮춰질 수도 있다.
개시된 아키텍처의 신규의 양태를 수행하기 위한 예시적인 방법론을 대표하는 로직 플로우의 세트가 본원에서 포함된다. 설명의 간이성의 목적을 위해, 본원에서 나타내어지는 하나 이상의 방법론이 일련의 액트로서 나타내어지고 설명되지만, 기술분야의 숙련된 자는 방법론이 액트의 순서에 의해 제한되지 않는다는 것을 이해하고 알 것이다. 이에 응하여, 몇몇 액트는 상이한 순서로 및/또는 본원에서 나타내어지고 설명되는 것으로부터의 다른 액트와 동시에 발생할 수도 있다. 당업자들은, 방법이 상태도(state diagram) 같은 일련의 상호 관련 상태들 또는 이벤트들로서 대안적으로 표현될 수도 있음을 이해하고 알 수 있을 것이다. 또한, 방법론에서 예시되는 모든 액트가 신규의 구현예에 대해 요구되는 것은 아닐 수도 있다.
로직 플로우는 소프트웨어, 펌웨어, 및/또는 하드웨어로 구현될 수도 있다. 소프트웨어 및 펌웨어 실시형태에서, 로직 플로우는, 광학적, 자기적 또는 반도체 스토리지와 같은 적어도 하나의 비일시적 컴퓨터 판독가능 매체 또는 머신 판독가능 매체 상에 저장되는 컴퓨터 실행가능 명령어에 의해 구현될 수도 있다. 실시형태는 이러한 컨텍스트에 제한되지는 않는다.
도 12는 제2 로직 플로우를 예시한다. 도 12에서 도시되는 바와 같이, 제2 로직 플로우는 로직 플로우(1200)를 포함한다. 로직 플로우(1200)는, 본원에서 설명되는 하나 이상의 로직, 피쳐, 또는 디바이스, 예컨대 장치(1200)에 의해 실행되는 동작 중 일부 또는 전체를 대표할 수도 있다. 특히, 로직 플로우(1200)는, 검출 로직(1122-1), 복제 로직(1122-2), 요청 로직(1122-3), 라이트백 로직(1122-4), 마이그레이션 로직(1122-5) 또는 전력 로직(1122-6)에 의해 구현될 수도 있다.
도 12에서 도시되는 예시된 예에서, 로직 플로우(1200)는 블록 1202에서, 제2 회로부를 갖는 제2 디바이스가 제1 디바이스에 연결되었다는 표시를, 제1 회로부를 갖는 제1 디바이스에서, 검출할 수도 있다. 제1 및 제2 회로부는, 근거리 메모리 및 원거리 메모리를 구비하는 2LM 아키텍처를 사용하여 실행되도록 정렬되는 하나 이상의 애플리케이션을 실행할 수도 있다. 예를 들면, 검출 로직(1122-1)은 제2 디바이스를 검출할 수도 있다. 몇몇 예에서, 로직 플로우(1200)는 블록 1204에서, 제2 디바이스에 위치되는 제1 원거리 메모리로부터, 제2 디바이스에 위치되는 제2 근거리 메모리로부터의 메모리 컨텐츠의 사본을 수신할 수도 있는데, 그 메모리 컨텐츠는 하나 이상의 애플리케이션을 실행하도록 제2 회로부에 의해 사용된다. 이들 예의 경우, 복제 로직(1122-2)은 메모리 컨텐츠의 사본을 수신할 수도 있다. 몇몇 예에 따르면, 로직 플로우(1200)는 블록 1206에서, 메모리 컨텐츠의 사본을, 제1 또는 제2 디바이스에 대한 오퍼레이팅 시스템에 투명한 방식으로, 제1 디바이스에 위치되는 제1 근거리 메모리에 저장할 수도 있다. 메모리 컨텐츠의 사본은, 하나 이상의 애플리케이션을 실행하기 위한 제1 회로부에 의한 사용을 위해, 제1 근거리 메모리에 저장될 수도 있다. 이들 예의 경우, 복제 로직(1122-2)은 메모리 컨텐츠의 사본이 제1 근거리 메모리에 저장되게 할 수도 있다.
몇몇 예에서, 로직 플로우(1200)는 블록 1208에서, 제1 근거리 메모리로부터, 메모리 컨텐츠의 적어도 일부를, 제2 디바이스에 위치되는 제1 원거리 메모리로 전송할 수도 있다. 메모리 컨텐츠의 적어도 일부는, 제1 회로부에 의한 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지를 포함할 수도 있다. 이들 예의 경우, 라이트백 로직(1122-4)은, 메모리 컨텐츠의 적어도 일부가 적어도 제1 원거리 메모리로 전송되게 할 수도 있다. 몇몇 예에서, 로직 플로우(1200)는, 블록 1210에서 제1 근거리 메모리에 대한 페이지 누락 표시를 수신할 수도 있다. 페이지 누락은 제1 원거리 메모리에 유지되는 데이터와 관련될 수도 있다. 그 다음, 로직 플로우는 블록 1212에서, 제1 원거리 메모리에서 유지되는 데이터를 획득하기 위한 메모리 액세스 요청을 제2 디바이스로 전송할 수도 있다. 그 다음, 로직 플로우는 블록 1214에서 제1 원거리 메모리로부터 데이터를 수신할 수도 있고, 그 다음, 로직 플로우는 블록 1216에서 그 데이터를 제1 근거리 메모리에 저장할 수도 있다. 이들 예의 경우, 요청 로직(1122-3)은 로직 플로우(1200)의 블록 1210 내지 1216을 구현할 수도 있다.
도 13은 제2 저장 매체의 한 실시형태를 예시한다. 도 13에서 도시되는 바와 같이, 제2 저장 매체는 저장 매체(1300)를 포함한다. 저장 매체(1300)는 제조 물품을 포함할 수도 있다. 몇몇 예에서, 저장 매체(1300)는 임의의 비일시적 컴퓨터 판독가능 매체 또는 머신 판독가능 매체, 예컨대 광학적, 자기적 또는 반도체 스토리지를 포함할 수도 있다. 저장 매체(1300)는 다양한 타입의 컴퓨터 실행가능 명령어, 예컨대 로직 플로우(1200)를 구현하기 위한 명령어를 저장할 수도 있다. 컴퓨터 판독가능 또는 머신 판독가능 저장 매체의 예는, 휘발성 메모리 또는 불휘발성 메모리, 착탈식 또는 비착탈식 메모리, 소거가능 또는 소거불가능 메모리, 기록가능 또는 기록불가능 메모리 등등을 포함하는, 전자 데이터를 저장할 수 있는 임의의 유형의 매체를 포함할 수도 있다. 컴퓨터 실행가능 명령어의 예는, 임의의 적절한 타입의 코드, 예컨대 소스 코드, 컴파일형 코드, 인터프리트형 코드, 실행파일형 코드, 정적 코드, 동적 코드, 객체 지향 코드, 비주얼 코드 등등을 포함할 수도 있다. 예는 이 컨텍스트에서 제한되지 않는다.
도 14는 디바이스(1400)의 한 실시형태를 예시한다. 몇몇 예에서, 디바이스(1400)는, 컴퓨트, 메모리 및 입/출력(I/O) 리소스를 다른 디바이스와 집성하도록 구성되거나 정렬될 수도 있다. 디바이스(1400)는, 예를 들면, 장치(800/1100), 저장 매체(1000/1300) 및/또는 로직 회로(1470)를 구현할 수도 있다. 로직 회로(1470)는 장치(800/1100)에 대해 설명되는 동작을 수행하기 위한 물리적 회로를 포함할 수도 있다. 도 14에서 도시되는 바와 같이, 디바이스(1400)는, 무선 인터페이스(1410), 베이스밴드 회로부(1420), 및 컴퓨팅 플랫폼(1430)을 포함할 수도 있지만, 이 구성으로 예가 제한되는 것은 아니다.
디바이스(1400)는, 장치(800/1100), 저장 매체(1000/1300), 및/또는 로직 회로(1470)에 대한 구조 및/또는 동작 중 일부 또는 전체를 단일의 컴퓨팅 엔티티에서, 예컨대 단일의 디바이스 내에서 전적으로 구현할 수도 있다. 실시형태는 이러한 컨텍스트에 제한되지는 않는다.
무선 인터페이스(1410)는, 싱글 캐리어 또는 멀티 캐리어 변조 신호(예를 들면, 상보적 코드 키잉(complementary code keying; CCK) 및/또는 직교 주파수 분할 다중화(orthogonal frequency division multiplexing; OFDM) 심볼 및/또는 싱글 캐리어 주파수 분할 다중화(single carrier frequency division multiplexing; SC-FDM) 심볼을 포함함)를 송신하도록 및/또는 수신하도록 적응되는 컴포넌트 또는 컴포넌트의 조합을 포함할 수도 있지만, 실시형태는 임의의 특정한 오버 디 에어(over-the-air) 인터페이스 또는 변조 방식으로 제한되지는 않는다. 무선 인터페이스(1410)는, 예를 들면, 수신기(1412), 송신기(1416) 및/또는 주파수 합성기(1414)를 포함할 수도 있다. 무선 인터페이스(1410)는, 바이어스 제어부, 수정 발진기 및/또는 하나 이상의 안테나(1418-f)을 포함할 수도 있다. 다른 실시형태에서, 무선 인터페이스(1410)는, 소망에 따라, 외부 전압 제어 발진기(voltage-controlled oscillator; VCO), 표면 탄성파 필터, 중간 주파수(intermediate frequency; IF) 필터 및/또는 RF 필터를 사용할 수도 있다. 다양한 잠재적인 RF 인터페이스 디자인 때문에, 그 광범위한 설명은 생략한다.
베이스밴드 회로부(1420)는, 수신 및/또는 송신 신호를 프로세싱하기 위해 무선 인터페이스(1410)와 통신할 수도 있고, 예를 들면, 수신된 신호를 하향 변환하기 위한 아날로그 디지털 변환기(1422), 송신을 위해 신호를 상향 변환하기 위한 디지털 아날로그 변환기(1424)를 포함할 수도 있다. 또한, 베이스밴드 회로부(1420)는 각각의 수신/송신 신호의 물리층(physical layer; PHY) 링크층 프로세싱을 위한 PHY 프로세싱 회로(1426)를 포함할 수도 있다. 베이스밴드 회로부(1420)는, 예를 들면, 매체 액세스 제어(medium access control; MAC)/데이터 링크층 프로세싱을 위한 프로세싱 회로(1428)를 포함할 수도 있다. 베이스밴드 회로부(1420)는, 하나 이상의 인터페이스(1434)를 통해, MAC 프로세싱 회로(1428) 및/또는 컴퓨팅 플랫폼(1430)과 통신하기 위한 메모리 컨트롤러(1432)를 포함할 수도 있다.
몇몇 실시형태에서, PHY 프로세싱 회로(1426)는, 통신 프레임(예를 들면, 서브프레임을 포함함)을 구축하고 및/또는 해체하기 위해, 버퍼 메모리와 같은 추가적인 회로부와 조합하는, 프레임 구축 및/또는 해체 로직을 포함할 수도 있다. 대안적으로 또는 추가적으로, MAC 프로세싱 회로(1428)는 이들 기능 중 소정의 것에 대한 프로세싱을 공유하거나 또는 이들 프로세스를 PHY 프로세싱 회로(1426)와는 독립적으로 수행할 수도 있다. 몇몇 실시형태에서, MAC 및 PHY 프로세싱은 단일의 회로에 통합될 수도 있다.
컴퓨팅 플랫폼(1430)은 디바이스(1400)에게 컴퓨팅 기능성을 제공할 수도 있다. 도시되는 바와 같이, 컴퓨팅 플랫폼(1430)은 프로세싱 컴포넌트(1440)를 포함할 수도 있다. 추가적으로 또는 대안적으로, 디바이스(1400)의 베이스밴드 회로부(1420)는, 프로세싱 컴포넌트(1430)를 사용하여, 장치(800/1100), 저장 매체(1000/1300), 및 로직 회로(1470)에 대한 프로세싱 동작 또는 로직을 실행할 수도 있다. 프로세싱 컴포넌트(1440)(및/또는 PHY(1426) 및/또는 MAC(1428))는 다양한 하드웨어 엘리먼트, 소프트웨어 엘리먼트, 또는 양자의 조합을 포함할 수도 있다.
하드웨어 엘리먼트의 예는, 디바이스, 로직 디바이스, 컴포넌트, 프로세서, 마이크로프로세서, 회로, 프로세서 회로, 회로 엘리먼트(예를 들면, 트랜지스터, 저항기, 커패시터, 인덕터 등등), 집적 회로, 주문형 반도체(ASIC), 프로그래머블 로직 디바이스(programmable logic device; PLD), 디지털 신호 프로세서(digital signal processors; DSP), 필드 프로그래머블 게이트 어레이(field programmable gate array; FPGA), 메모리 유닛, 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등등을 포함할 수도 있다. 소프트웨어의 예는, 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 소프트웨어 개발 프로그램, 머신 프로그램, 오퍼레이팅 시스템 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메소드, 프로시져, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(application program interface; API), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합을 포함할 수도 있다. 예가 하드웨어 엘리먼트 및/또는 소프트웨어 엘리먼트를 사용하여 구현되는지의 여부를 결정하는 것은, 주어진 예에 대해 소망되는 바와 같은, 임의의 다수의 인자, 예컨대 소망의 계산 속도(computational rate), 파워 레벨, 열 내성, 프로세싱 싸이클 버짓(budget), 입력 데이터 레이트, 출력 데이터 레이트, 메모리 리소스, 데이터 버스 속도 및 다른 디자인 또는 성능 제약사항에 따라 변할 수도 있다.
컴퓨팅 플랫폼(1430)은 다른 플랫폼 컴포넌트(1450)를 더 포함할 수도 있다. 다른 플랫폼 컴포넌트(1450)는 공통 컴퓨팅 엘리먼트, 예컨대 하나 이상의 프로세서, 멀티 코어 프로세서, 코프로세서, 메모리 유닛, 칩셋, 컨트롤러, 주변장치, 인터페이스, 발진기, 타이밍 디바이스, 비디오 카드, 오디오 카드, 멀티미디어 입/출력(I/O) 컴포넌트(예를 들면, 디지털 디스플레이), 파워 서플라이 등등을 포함한다. 메모리 유닛의 예는, 제한 없이, 하나 이상의 고속 메모리 유닛의 형태의 다양한 타입의 컴퓨터 판독가능 및 머신 판독가능 저장 매체, 예컨대 리드 온리 메모리(read-only memory; ROM), 랜덤 액세스 메모리(random-access memory; RAM), 다이나믹 RAM(dynamic RAM; DRAM), 더블 데이터 레이트 DRAM(Double-Data-Rate DRAM; DDRAM), 동기식 DRAM(synchronous DRAM; SDRAM), 정적 RAM(static RAM; SRAM), 프로그래머블 ROM(programmable ROM; PROM), 소거가능 프로그래머블 ROM(erasable programmable ROM; EPROM), 전기적으로 소거가능한 프로그래머블 ROM(electrically erasable programmable ROM; EEPROM), 플래시 메모리, 강유전체 폴리머 메모리와 같은 폴리머 메모리, 상전이 또는 강유전체 메모리, 실리콘 산화물 질화물 산화물 실리콘(SONOS) 메모리, 자기 또는 광학 카드, 독립 디스크의 중복 어레이(Redundant Array of Independent Disks; RAID)와 같은 디바이스의 어레이, 솔리드 스테이트 메모리 디바이스(예를 들면, USB 메모리, 솔리드 스테이트 드라이브(solid state drives; SSD)) 및 정보를 저장하기에 적합한 임의의 다른 타입의 저장 매체를 포함할 수도 있다.
컴퓨팅 플랫폼(1430)은 네트워크 인터페이스(1460)를 더 포함할 수도 있다. 몇몇 예에서, 네트워크 인터페이스(1460)는, 디바이스 사이에 인터커넥트를 확립하기 위해 유선 또는 무선 통신 채널을 통해 다른 디바이스에 연결하기 위한 상기 설명된 기술과 같은 하나 이상의 무선 또는 유선 기술에 따라 동작되는 네트워크 인터페이스를 지원하기 위한 로직 및/또는 피쳐를 포함할 수도 있다.
디바이스(1400)는, 예를 들면, 유저 기기, 컴퓨터, 퍼스널 컴퓨터(PC), 데스크탑 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 컴퓨터, 울트라북 컴퓨터, 스마트폰, 웨어러블 컴퓨팅 디바이스, 임베딩된 전자장치, 게이밍 콘솔, 서버, 서버 어레이 또는 서버 팜, 웹 서버, 네트워크 서버, 인터넷 서버, 워크 스테이션, 미니 컴퓨터, 메인 프레임 컴퓨터, 슈퍼컴퓨터, 네트워크 어플라이언스, 웹 어플라이언스, 분산형 컴퓨팅 시스템, 멀티프로세서 시스템, 프로세서 기반 시스템, 또는 이들의 조합일 수도 있다. 추가적으로, 본원에서 설명되는 디바이스(1400)의 기능 및/또는 특정 구성은, 적절히 소망에 따라, 디바이스(1400)의 다양한 실시형태에 포함되거나 또는 생략될 수도 있다.
디바이스(1400)의 실시형태는 단일 입력 단일 출력(single input single output; SISO) 아키텍처를 사용하여 구현될 수도 있다. 그러나, 소정의 구현예는, 빔포밍 또는 공간 분할 다중 액세스(spatial division multiple access; SDMA)에 대해 적응적 안테나 기술을 사용하는 및/또는 다중 입력 다중 출력(multiple input multiple output; MIMO) 통신 기술을 사용하는, 송신 및/또는 수신용의 다수의 안테나(1418-f)를 포함할 수도 있다.
디바이스(1400)의 컴포넌트 및 피쳐는, 이산 회로부, 주문형 반도체(ASIC), 로직 게이트 및/또는 단일 칩 아키텍처 중 임의의 조합을 사용하여 구현될 수도 있다. 또한, 디바이스(1400)의 피쳐는, 알맞게 적절한 경우에, 마이크로컨트롤러, 프로그래머블 로직 어레이 및/또는 마이크로프로세서 또는 상기한 것의 임의의 조합을 사용하여 구현될 수도 있다. 하드웨어, 펌웨어 및/또는 소프트웨어 엘리먼트는 총체적으로 또는 개별적으로 본원에서 "로직" 또는 "회로"로 칭한다는 것을 유의한다.
도 14의 블록도에서 도시되는 예시적인 디바이스(1400)는 많은 잠재적인 구현예 중 하나의 기능적 설명예를 나타낼 수도 있다는 것이 이해되어야 한다.
따라서, 첨부의 도면에서 묘사되는 블록 기능의 분할, 생략 또는 포함은, 이들 기능을 구현하기 위한 하드웨어 컴포넌트, 회로, 소프트웨어 및/또는 엘리먼트가 반드시 실시형태에서 분할되거나, 생략되거나, 또는 포함되어야 할 것이라는 것을 나타내지는 않는다.
몇몇 예는 "일 예에서" 또는 "한 예"의 표현 및 그들의 유도 표현을 사용하여 설명될 수도 있다. 이들 용어는, 예와 연계하여 설명되는 특정 피쳐, 구조, 또는 특성이 적어도 하나의 예에 포함된다는 것을 의미한다. 본 명세서의 여러 위치에서의 "일 예에서"의 어구의 출현은 반드시 동일한 예를 모두 가리키는 것은 아니다.
몇몇 예는, 표현 "커플링되는", "연결되는", 또는 "커플링될 수 있는" 및 그들의 유도 표현을 사용하여 설명될 수도 있다. 이들 용어는 각각에 대해 동의어로서 반드시 의도되지는 않는다. 예를 들면, 용어 "연결되는" 및/또는 "커플링되는"을 사용하는 설명은, 두 개 이상의 엘리먼트가 서로 직접적인 물리적 또는 전기적 접촉 상태에 있다는 것을 나타낼 수도 있다. 그러나, 용어 "커플링된"은, 2개 이상의 엘리먼트들이 서로 직접적으로 접촉되지 않지만, 여전히 서로 함께 동작하거나 또는 상호작용하는 것을 또한 의미할 수도 있다.
몇몇 예에서, 예시적인 제1 장치가 포함될 수도 있다. 예시적인 제1 장치는 또한, 제1 근거리 메모리 및 제1 원거리 메모리를 포함하는 2레벨 메모리(2LM) 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제1 회로부를 포함할 수도 있다. 예시적인 제1 장치는 또한, 제2 근거리 메모리를 또한 포함하는 2LM 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제2 회로부를 검출하기 위한 검출 로직을 포함할 수도 있다. 예시적인 제1 장치는 또한, 제1 원거리 메모리와 제2 근거리 메모리 사이에서 연결을 야기하는 연결 로직을 포함할 수도 있다. 예시적인 제1 장치는 또한, 제1 근거리 메모리로부터의 메모리 컨텐츠의 사본이 제2 근거리 메모리로 마이그레이션되도록 하기 위해 제1 원거리 메모리를 활용하는 마이그레이션 로직을 포함할 수도 있다. 메모리 컨텐츠는, 오퍼레이팅 시스템에 투명한 방식으로 마이그레이션될 수도 있다.
예시적인 제1 장치에 대한 몇몇 예에 따르면, 제1 회로부, 제1 근거리 메모리 및 제1 원거리 메모리는 제1 디바이스에 위치될 수도 있고 제2 회로부 및 제2 근거리 메모리는 제2 디바이스에 위치될 수도 있다.
예시적인 제1 장치에 대한 몇몇 예에서, 제1 근거리 메모리는, 제2 근거리 메모리의 제2 메모리 용량보다 더 작은 제1 메모리 용량을 구비할 수도 있다. 몇몇 예에 따르면, 예시적인 제1 장치는 또한, 제1 근거리 메모리의 메모리 컨텐츠의 사본의 제2 근거리 메모리로의 마이그레이션에 후속하여 제1 회로부 및 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮추고 제1 원거리 메모리로의 전력이 계속 인가되게 하는 전력 로직 전력 로직을 포함할 수도 있다.
예시적인 제1 장치에 대한 몇몇 예에서, 연결 로직은 제1 원거리 메모리와 제2 근거리 메모리 사이의 연결이 종료될 것이라는 표시를 수신할 수도 있다. 그 다음, 전력 로직은 제1 회로부 및 제1 근거리 메모리로 하여금 제1 회로부 및 제1 근거리 메모리의 전력을 더 높은 전력 상태로 전력을 높이게 할 수도 있다. 그 다음, 마이그레이션 로직은 제2 근거리 메모리로부터 메모리 컨텐츠의 제2 사본을 수신하고 메모리 컨텐츠의 제2 사본이 제1 원거리 메모리에 저장되게 그리고 메모리 컨텐츠의 제2 사본의 적어도 일부가 제1 근거리 메모리에 저장되게 할 수도 있다.
예시적인 제1 장치에 대한 몇몇 예에 따르면, 마이그레이션 로직은, 제2 근거리 메모리에 이전에 저장된 그리고 제2 회로부에 의해 실행될 때 하나 이상의 애플리케이션에 의해 사용되는 메모리 페이지를 저장하기 위한 메모리 페이징 정책에 기초하여 메모리 컨텐츠의 제2 사본의 적어도 일부가 제1 근거리 메모리에 저장되게 할 수도 있다. 메모리 페이징 정책은, 액티브하게 사용된 메모리 페이지를 저장하는 것, 메모리 페이지와 관련되는 수명에 기초하여 저장하는 것 또는 메모리 페이지와 관련되는 액세스 패턴에 기초하여 저장하는 것 중 적어도 하나를 포함할 수도 있다.
몇몇 예에서, 예시적인 제1 장치는 또한, 제2 근거리 메모리에 대한 페이지 누락에 기초하여 제1 원거리 메모리에 대한 메모리 액세스 요청을 수신하고, 페이지 누락과 관련되는 데이터를 제2 근거리 메모리에 제공하기 위해 제1 원거리 메모리에 대한 메모리 액세스 요청이 이행되게 하는 요청 로직을 포함할 수도 있다.
예시적인 제1 장치에 대한 몇몇 예에 따르면, 마이그레이션 로직은 제2 근거리 메모리로부터 메모리 컨텐츠의 적어도 일부를 수신할 수도 있다. 이들 예의 경우, 메모리 컨텐츠의 적어도 일부는, 제2 회로부에 의한 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지를 포함할 수도 있다. 마이그레이션 로직은 하나 이상의 더티 페이지가 제1 원거리 메모리에 저장되게 할 수도 있다.
예시적인 제1 장치에 대한 몇몇 예에서, 마이그레이션 로직은, 제2 근거리 메모리에 유지되는 더티 페이지의 제1 또는 제2 임계 개수가 초과되는 것 또는 더티 페이지가 제2 근거리 메모리에 유지될 수도 있는 임계 시간이 초과되는 것 중 하나 이상을 포함하는 라이트백 정책에 기초하여 메모리 컨텐츠의 적어도 일부를 수신할 수도 있다.
예시적인 제1 장치에 대한 몇몇 예에 따르면, 마이그레이션 로직은, 제2 근거리 메모리에 포함되는 더티 페이지의 동적 임계 개수를 포함하는 메모리 체크포인팅이 초과되는 것에 기초하여 메모리 컨텐츠의 적어도 일부를 수신할 수도 있다. 이들 예의 경우, 동적 임계 개수는, 이용가능한 데이터 대역폭, 관측된 레이턴시, 또는 유선 인터커넥트 또는 무선 인터커넥트를 통해 제1 원거리 메모리와 제2 근거리 메모리 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 할당된 전력 사용량 한계치에 기초할 수도 있고, 동적 임계 개수는 또한, 제1 원거리 메모리에 대한 메모리 컨트롤러 기록 레이턴시 및 제2 근거리 메모리로부터의 메모리 컨트롤러 판독 레이턴시에 기초한다.
예시적인 제1 장치에 대한 몇몇 예에서, 제1 디바이스는, 제2 디바이스에 있는 제2 회로부로부터 열을 방열하기 위한 더 큰 열용량과 비교하여, 제1 회로부로부터 열을 방열하기 위한 더 작은 열용량을 구비하며, 배터리 전력으로 동작하는 제1 디바이스 또는 제2 디바이스에 있는 제2 회로부에 전력을 인가하기 위한 더 높은 전류 전달 용량과 비교하여 제1 회로부에 전력을 인가하기 위한 더 작은 전류 전달 용량을 구비하는 제1 디바이스 중 하나 이상을 포함할 수도 있다.
몇몇 예에서, 예시적인 제1 방법은, 제1 회로부 상에서 하나 이상의 애플리케이션을 실행하는 것을 포함할 수도 있다. 제1 회로부는, 제1 근거리 메모리 및 제1 원거리 메모리를 포함하는 2레벨 메모리(2LM) 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수도 있다. 예시적인 제1 방법은 또한, 제2 근거리 메모리를 또한 포함하는 2LM 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제2 회로부를 검출하는 것을 포함할 수도 있다. 예시적인 제1 방법은 또한, 제1 원거리 메모리를 제2 근거리 메모리에 연결하는 것을 포함할 수도 있다. 예시적인 제1 방법은 또한, 제1 근거리 메모리로부터의 메모리 컨텐츠의 사본을 제2 근거리 메모리로 마이그레이션하기 위해 제1 원거리 메모리를 활용하는 것을 포함할 수도 있는데, 메모리 컨텐츠의 사본은 오퍼레이팅 시스템에 투명한 방식으로 마이그레이션된다. 예시적인 제1 방법에 대한 몇몇 예에 따르면, 제1 회로부, 제1 근거리 메모리 및 제1 원거리 메모리는 제1 디바이스에 위치될 수도 있고 제2 회로부 및 제2 근거리 메모리는 제2 디바이스에 위치될 수도 있다.
예시적인 제1 방법에 대한 몇몇 예에서, 제1 근거리 메모리는, 제2 근거리 메모리의 제2 메모리 용량보다 더 작은 제1 메모리 용량을 구비할 수도 있다.
몇몇 예에 따르면, 예시적인 제1 방법은 또한, 제1 근거리 메모리의 메모리 컨텐츠의 사본의 제2 근거리 메모리로의 마이그레이션에 후속하여, 제1 회로부 및 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮추는 것을 포함할 수도 있다. 예시적인 제1 방법은 또한 제1 원거리 메모리에 계속 전력을 인가하는 것을 포함할 수도 있다.
몇몇 예에 따르면, 예시적인 제1 방법은 또한, 제2 근거리 메모리에 대한 페이지 누락에 기초하여, 제1 원거리 메모리에서, 메모리 액세스 요청을 수신하는 것; 및 페이지 누락과 관련되는 데이터를 제공하기 위해 메모리 액세스 요청을 이행하는 것을 포함할 수도 있다. 예시적인 제1 방법에 대한 몇몇 예에서, 제2 디바이스는, 유선 인터커넥트를 통해 제2 디바이스와 연결하기 위한 유선 통신 채널을 제1 디바이스가 확립하는 것을 가능하게 하는 유선 인터페이스에 제1 디바이스가 커플링하는 것에 응답하여 또는 무선 인터커넥트를 통해 제2 디바이스와 연결하기 위한 무선 통신 채널을 제1 디바이스가 확립하는 것을 가능하게 하는 소정의 물리적 근접범위 내에 제1 디바이스가 다가오는 것에 응답하여, 검출될 수도 있다.
몇몇 예에 따르면, 예시적인 제1 방법은 또한, 제1 원거리 메모리에서, 제2 근거리 메모리로부터 메모리 컨텐츠의 적어도 일부를 수신하는 것을 포함할 수도 있다. 이들 예의 경우, 메모리 컨텐츠의 적어도 일부는, 제2 회로부에 의한 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지를 포함할 수도 있다.
예시적인 제1 방법에 대한 몇몇 예에서, 메모리 컨텐츠의 적어도 일부를 수신하는 것은, 제2 근거리 메모리에 유지되는 더티 페이지의 제1 또는 제2 임계 개수가 초과되는 것 또는 더티 페이지가 제2 근거리 메모리에 유지될 수도 있는 임계 시간이 초과되는 것 중 하나 이상을 포함하는 라이트백 정책에 기초할 수도 있다.
예시적인 제1 방법에 대한 몇몇 예에 따르면, 제1 임계 개수는, 제1 근거리 메모리에 대한 메모리 용량 또는 유선 인터커넥트 또는 무선 인터커넥트를 통해 제1 원거리 메모리와 제2 근거리 메모리 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 각각의 데이터 대역폭 및 레이턴시에 기초할 수도 있다.
예시적인 제1 방법에 대한 몇몇 예에서, 제2 임계 개수는, 유선 인터커넥트 또는 무선 인터커넥트를 통해 제1 원거리 메모리와 제2 근거리 메모리 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 데이터 대역폭 성능, 유선 또는 무선 인터커넥트로부터 연결해제하는 것과 관련되는 시간 제한 및 제2 회로부에 의한 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지와 관련되는 사이즈에 기초할 수도 있다.
예시적인 제1 방법에 대한 몇몇 예에 따르면, 메모리 컨텐츠의 적어도 일부를 수신하는 것은, 제2 근거리 메모리에 유지되는 더티 페이지의 동적 임계 개수를 포함하는 메모리 체킹포인트가 초과되는 것에 기초할 수도 있고, 동적 임계 개수는 이용가능한 데이터 대역폭, 관측된 레이턴시, 또는 유선 인터커넥트 또는 무선 인터커넥트를 통해 제1 원거리 메모리와 제2 근거리 메모리 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 할당된 전력 사용량 한계치에 기초하고, 동적 임계 개수는 또한, 제1 원거리 메모리에 대한 메모리 컨트롤러 기록 레이턴시 및 제2 근거리 메모리로부터의 메모리 컨트롤러 판독 레이턴시에 기초한다.
몇몇 예에서, 예시적인 제1 방법은 또한, 제2 회로부에 대한 연결이 종료될 것이라는 표시를 수신하는 것, 제1 회로부 및 제1 원거리 메모리의 전력을 더 높은 전력 상태로 높이는 것, 제1 원거리 메모리에서, 제2 근거리 메모리로부터 메모리 컨텐츠의 마이그레이션된 제2 사본을 수신하는 것, 제2 근거리 메모리로부터의 메모리 컨텐츠의 마이그레이션된 제2 사본의 적어도 일부를 제1 근거리 메모리에 저장하는 것 및 제1 회로부 상에서 하나 이상의 애플리케이션의 실행을 재개하는 것을 포함할 수도 있다.
예시적인 제1 방법에 대한 몇몇 예에 따르면, 메모리 컨텐츠의 제2 사본의 적어도 일부를 저장하는 것은, 제2 근거리 메모리에 이전에 저장된 그리고 제2 회로부에 의해 실행될 때 하나 이상의 애플리케이션에 의해 사용되는 메모리 페이지를 저장하기 위한 메모리 페이징 정책에 기초할 수도 있고, 메모리 페이징 정책은, 액티브하게 사용된 메모리 페이지를 저장하는 것, 메모리 페이지와 관련되는 수명에 기초하여 저장하는 것 또는 메모리 페이지와 관련되는 액세스 패턴에 기초하여 저장하는 것 중 적어도 하나를 포함한다.
예시적인 제1 방법에 대한 몇몇 예에서, 하나 이상의 애플리케이션은, 적어도 4K 해상도 스트리밍 비디오 애플리케이션, 적어도 4K 해상도 이미지 또는 그래픽을 디스플레이에 제시하기 위한 애플리케이션, 디스플레이에 제시될 때 적어도 4K 해상도를 갖는 비디오 또는 그래픽을 포함하는 게이밍 애플리케이션, 비디오 편집용 애플리케이션 또는 터치 입력 성능을 갖는 제2 회로부에 커플링되는 디스플레이에 대한 유저 입력을 위한 터치 스크린 애플리케이션 중 하나를 포함할 수도 있다.
몇몇 예에서, 예시적인 제1의 적어도 하나의 머신 판독가능 매체는, 제1 회로부를 구비하는 제1 디바이스 상에서 실행되는 것에 응답하여 제1 디바이스로 하여금 하나 이상의 애플리케이션을 실행하게 할 수도 있는 복수의 명령어를 포함하고, 제1 회로부는 제1 근거리 메모리 및 제2 원거리 메모리를 포함하는 2레벨 메모리(2LM) 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있다. 명령어는 또한, 제1 디바이스로 하여금, 제2 근거리 메모리를 또한 포함하는 2LM 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제2 회로부를 검출하게 할 수도 있다. 명령어는 또한, 제1 디바이스로 하여금, 제1 원거리 메모리를 제2 근거리 메모리에 연결하게 할 수도 있다. 명령어는 또한, 제1 디바이스로 하여금, 제1 근거리 메모리로부터의 메모리 컨텐츠의 사본을 제2 근거리 메모리로 마이그레이션하기 위해 제1 원거리 메모리를 활용하게 할 수도 있다. 메모리 컨텐츠의 사본은, 오퍼레이팅 시스템에 투명한 방식으로 마이그레이션될 수도 있다.
제1의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에 따르면, 제1 회로부, 제1 근거리 메모리 및 제1 원거리 메모리는 제1 디바이스에 위치될 수도 있고 제2 회로부 및 제2 근거리 메모리는 제2 디바이스에 위치될 수도 있다.
제1의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에서, 제1 근거리 메모리는, 제2 근거리 메모리의 제2 메모리 용량보다 더 작은 제1 메모리 용량을 구비할 수도 있다.
제1의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에 따르면, 명령어는 또한, 제1 디바이스로 하여금, 제1 근거리 메모리의 메모리 컨텐츠의 사본의 제2 근거리 메모리로의 마이그레이션에 후속하여, 제1 회로부 및 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮추게 하고 제1 원거리 메모리에 계속 전력을 인가하게 할 수도 있다.
제1의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에서, 명령어는 또한, 제1 디바이스로 하여금, 제2 근거리 메모리에 대한 페이지 누락에 기초하여 제1 원거리 메모리에 대한 메모리 액세스 요청을 수신하게 하고, 페이지 누락과 관련되는 데이터를 제2 근거리 메모리에 제공하기 위해 제1 원거리 메모리에 대한 메모리 액세스 요청을 이행하게 할 수도 있다.
제1의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에 따르면, 명령어는 또한, 제1 디바이스로 하여금, 유선 인터커넥트를 통해 제2 회로부를 구비하는 제2 디바이스와 연결하기 위한 유선 통신 채널을 제1 디바이스가 확립하는 것을 가능하게 하는 유선 인터페이스에 제1 디바이스가 커플링하는 것에 응답하여 또는 무선 인터커넥트를 통해 제2 디바이스와 연결하기 위한 무선 통신 채널을 제1 디바이스가 확립하는 것을 가능하게 하는 소정의 물리적 근접범위 내에 제1 디바이스가 다가오는 것에 응답하여, 제2 회로부를 검출하게 할 수도 있다.
제1의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에서, 명령어는 또한, 제1 디바이스로 하여금, 제2 근거리 메모리로부터 메모리 컨텐츠의 적어도 일부 - 메모리 컨텐츠의 적어도 일부는 제2 회로부에 의한 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지를 포함함 - 를 수신하게 하고 메모리 컨텐츠의 수신된 적어도 일부로 하여금 제1 원거리 메모리에 저장되게 하는 것을 하게 할 수도 있다.
제1의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에 따르면, 명령어는 또한, 제1 디바이스로 하여금, 제2 근거리 메모리에 유지되는 더티 페이지의 제1 또는 제2 임계 개수가 초과되는 것 또는 더티 페이지가 제2 근거리 메모리에 유지될 수도 있는 임계 시간이 초과되는 것 중 하나 이상을 포함하는 라이트백 정책에 기초하여 메모리 컨텐츠의 적어도 일부를 수신하게 할 수도 있다.
몇몇 예에서, 제1의 적어도 하나의 머신 판독가능 매체의 경우, 명령어는 또한, 제1 디바이스로 하여금, 제2 근거리 메모리에 유지되는 더티 페이지의 동적 임계 개수를 포함하는 메모리 체크포인팅이 초과되는 것에 기초하여 메모리 컨텐츠의 적어도 일부를 수신하게 할 수도 있는데, 동적 임계 개수는, 이용가능한 데이터 대역폭, 관측된 레이턴시, 또는 유선 인터커넥트 또는 무선 인터커넥트를 통해 제1 원거리 메모리와 제2 근거리 메모리 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 할당된 전력 사용량 한계치에 기초하고, 동적 임계 개수는 또한, 제1 원거리 메모리에 대한 메모리 컨트롤러 기록 레이턴시 및 제2 근거리 메모리로부터의 메모리 컨트롤러 판독 레이턴시에 기초한다.
몇몇 예에 따르면, 제1의 적어도 하나의 머신 판독가능 매체의 경우, 명령어는 또한 제1 디바이스로 하여금 제2 회로부에 대한 연결이 종료될 것이라는 표시를 수신하게 하고, 제1 회로부 및 제1 원거리 메모리를 더 높은 전력 상태로 전력을 높이고, 제2 근거리 메모리로부터 메모리 컨텐츠의 마이그레이션된 제2 사본을 수신하고, 메모리 컨텐츠의 마이그레이션된 제2 사본으로 하여금 제1 원거리 메모리에 저장되게 하고 그리고 메모리 컨텐츠의 마이그레이션된 제2 사본의 적어도 일부를, 제1 회로부 상에서의 하나 이상의 애플리케이션의 실행의 재개를 위해 제1 근거리 메모리에 저장한다.
몇몇 예에서, 제1의 적어도 하나의 머신 판독가능 매체의 경우, 명령어는 또한 제1 디바이스로 하여금, 제2 근거리 메모리에 이전에 저장된 그리고 제2 회로부에 의해 실행될 때 하나 이상의 애플리케이션에 의해 사용되는 메모리 페이지를 저장하기 위한 메모리 페이징 정책에 기초하여 메모리 컨텐츠의 마이그레이션된 제2 사본의 적어도 일부를 저장하게 할 수도 있는데, 메모리 페이징 정책은, 액티브하게 사용된 메모리 페이지를 저장하는 것, 메모리 페이지와 관련되는 수명에 기초하여 저장하는 것 또는 메모리 페이지와 관련되는 액세스 패턴에 기초하여 저장하는 것 중 적어도 하나를 포함한다.
몇몇 예에서, 예시적인 제2 장치는 또한, 제1 근거리 메모리 및 제1 원거리 메모리를 포함하는 2레벨 메모리(2LM) 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제1 회로부를 포함할 수도 있다. 예시적인 제2 장치는 또한, 2LM 아키텍처에 포함되는 제2 근거리 메모리에 대한 연결의 표시를 검출하기 위한 검출 로직을 포함할 수도 있다. 제2 근거리 메모리는, 하나 이상의 애플리케이션이 제2 회로부에 의해 실행될 때 하나 이상의 애플리케이션에 의해 사용될 수도 있다. 예시적인 제2 장치는 또한, 제1 원거리 메모리로부터, 하나 이상의 애플리케이션을 실행하기 위해 제2 회로부에 의해 사용되는 제2 근거리 메모리로부터 전송되는 메모리 컨텐츠의 사본을 수신하기 위한 복제 로직을 포함할 수도 있다. 복제 로직은, 메모리 컨텐츠의 사본으로 하여금, 오퍼레이팅 시스템에 대해 투명한 방식으로, 제1 근거리 메모리에 저장되게 할 수도 있다. 메모리 컨텐츠의 사본은, 하나 이상의 애플리케이션을 실행하기 위한 제1 회로부에 의한 사용을 위해, 제1 근거리 메모리에 저장될 수도 있다.
예시적인 제2 장치에 대한 몇몇 예에 따르면, 제1 근거리 메모리는, 제2 근거리 메모리의 제2 메모리 용량보다 더 큰 제1 메모리 용량을 구비할 수도 있다. 몇몇 예에서, 예시적인 제2 장치는, 제1 근거리 메모리에 대한 페이지 누락 표시를 수신하기 위한 요청 로직을 포함할 수도 있고, 페이지 누락은 제1 원거리 메모리에 유지되는 데이터와 관련된다. 이들 예의 경우, 요청 로직은 데이터를 획득하기 위해 메모리 액세스 요청을 제1 원거리 메모리로 전송하고, 제1 원거리 메모리로부터 데이터를 수신하고 수신된 데이터의 제1 근거리 메모리로의 복제를 야기할 수도 있다.
예시적인 제2 장치에 대한 몇몇 예에 따르면, 제1 회로부 및 제1 근거리 메모리는 제1 디바이스에 위치될 수도 있고 제2 회로부, 제1 원거리 메모리 및 제2 근거리 메모리는 제2 디바이스에 위치될 수도 있다.
예시적인 제2 장치에 대한 몇몇 예에서, 검출 로직은, 유선 인터커넥트를 통해 제2 디바이스와 연결하기 위한 유선 통신 채널을 제1 디바이스가 확립하는 것을 가능하게 하는 유선 인터페이스에 제1 디바이스가 커플링하는 것에 응답하여 또는 무선 인터커넥트를 통해 제2 디바이스와 연결하기 위한 무선 통신 채널을 제1 디바이스가 확립하는 것을 가능하게 하는 소정의 물리적 근접범위 내에 제1 디바이스가 다가오는 것에 응답하여, 제2 근거리 메모리에 대한 연결의 표시를 검출할 수도 있다.
몇몇 예에 따르면, 예시적인 제2 장치는 또한, 제1 근거리 메모리로부터, 메모리 컨텐츠의 적어도 일부를 제1 원거리 메모리로 전송하는 라이트백 로직을 포함할 수도 있고, 메모리 컨텐츠의 적어도 일부는 제1 회로부에 의한 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지를 포함한다.
예시적인 제2 장치에 대한 몇몇 예에서, 라이트백 로직은, 제1 근거리 메모리에 유지되는 더티 페이지의 제1 또는 제2 임계 개수가 초과되는 것 또는 더티 페이지가 제1 근거리 메모리에 유지될 수도 있는 임계 시간이 초과되는 것 중 하나 이상을 포함하는 라이트백 정책에 기초하여, 메모리 컨텐츠의 적어도 일부를 전송할 수도 있다.
예시적인 제2 장치에 대한 몇몇 예에 따르면, 라이트백 로직은, 제1 근거리 메모리에 유지되는 더티 페이지의 동적 임계 개수를 포함하는 메모리 체킹포인트가 초과되는 것에 기초하여 메모리 컨텐츠의 적어도 일부를 전송할 수도 있고, 동적 임계 개수는, 이용가능한 데이터 대역폭, 관측된 레이턴시, 또는 유선 인터커넥트 또는 무선 인터커넥트를 통해 제1 원거리 메모리와 제1 근거리 메모리 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 할당된 전력 사용량 한계치에 기초하고, 동적 임계 개수는 또한, 제1 원거리 메모리에 대한 메모리 컨트롤러 기록 레이턴시 및 제1 근거리 메모리로부터의 메모리 컨트롤러 판독 레이턴시에 기초한다.
예시적인 제2 장치에 대한 몇몇 예에서, 검출 로직은 제2 근거리 메모리에 대한 연결이 종료될 것이라는 표시를 수신할 수도 있다. 예시적인 제2 장치는 또한, 메모리 컨텐츠의 제2 사본의 적어도 일부의 제2 근거리 메모리로의 마이그레이션을 가능하게 하기 위해, 제1 근거리 메모리로부터의 메모리 컨텐츠의 제2 사본을 제1 원거리 메모리로 전송하기 위한 마이그레이션 로직을 포함할 수도 있다. 예시적인 제2 장치는 또한, 메모리 컨텐츠의 제2 사본을 제1 원거리 메모리로 전송하는 것에 후속하여, 제1 회로부 및 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮추기 위한 전력 로직을 포함할 수도 있다.
몇몇 예에서, 예시적인 제2 방법은, 제1 회로부를 구비하는 제1 디바이스에서, 제2 회로부를 구비하는 제2 디바이스가 제1 디바이스에 연결되었다는 표시를 검출하는 것을 포함할 수도 있다. 이들 예의 경우, 제1 및 제2 회로부 각각은, 근거리 메모리 및 원거리 메모리를 구비하는 2레벨 메모리(2LM) 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수도 있다. 예시적인 제2 방법은 또한, 제2 디바이스에 위치되는 제1 원거리 메모리로부터, 제2 디바이스에 유지되는 제2 근거리 메모리로부터의 메모리 컨텐츠의 사본을 수신하는 것을 포함할 수도 있다. 메모리 컨텐츠는 하나 이상의 애플리케이션을 실행하도록 제2 회로부에 의해 사용될 수도 있다. 예시적인 제2 방법은 또한, 제1 또는 제2 디바이스에 대한 오퍼레이팅 시스템에 대해 투명한 방식으로, 메모리 컨텐츠의 사본을 제1 디바이스에 위치되는 제1 근거리 메모리에 저장하는 것을 포함할 수도 있다. 메모리 컨텐츠의 사본은, 하나 이상의 애플리케이션을 실행하기 위한 제1 회로부에 의한 사용을 위해, 제1 근거리 메모리에 저장될 수도 있다.
예시적인 제2 방법에 대한 몇몇 예에 따르면, 제1 근거리 메모리는, 제2 근거리 메모리의 제2 메모리 용량보다 더 큰 제1 메모리 용량을 구비할 수도 있다. 몇몇 예에서, 예시적인 제2 방법은 또한, 제1 근거리 메모리에 대한 페이지 누락 표시를 수신하는 것을 포함할 수도 있다. 이들 예의 경우, 페이지 누락은 제1 원거리 메모리에 유지되는 데이터와 관련될 수도 있다. 예시적인 제2 방법은 또한, 제1 원거리 메모리에 유지되는 데이터를 획득하기 위한 메모리 액세스 요청을 제2 디바이스로 전송하는 것, 제1 원거리 메모리로부터 데이터를 수신하는 것 및 제1 근거리 메모리에 데이터를 저장하는 것을 포함할 수도 있다.
몇몇 예에 따르면, 예시적인 제2 방법은 또한, 유선 인터커넥트를 통해 제2 디바이스와 연결하기 위한 유선 통신 채널을 제1 디바이스가 확립하는 것을 가능하게 하는 유선 인터페이스에 제1 디바이스가 커플링하는 것에 응답하여 또는 무선 인터커넥트를 통해 제2 디바이스와 연결하기 위한 무선 통신 채널을 제1 디바이스가 확립하는 것을 가능하게 하는 소정의 물리적 근접범위 내에 제1 디바이스가 다가오는 것에 응답하여, 제2 디바이스가 연결되었다는 표시를 검출하는 것을 포함할 수도 있다.
몇몇 예에서, 예시적인 제2 방법은 또한, 제1 근거리 메모리로부터, 메모리 컨텐츠의 적어도 일부를 제2 디바이스에 유지되는 제1 원거리 메모리에 전송하는 것을 포함할 수도 있다. 이들 예의 경우, 메모리 컨텐츠의 적어도 일부는, 제1 회로부에 의한 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지를 포함할 수도 있다. 예시적인 제2 방법에 대한 몇몇 예에 따르면, 메모리 컨텐츠의 적어도 일부를 전송하는 것은, 제1 근거리 메모리에 유지되는 더티 페이지의 제1 또는 제2 임계 개수가 초과되는 것 또는 더티 페이지가 제1 근거리 메모리에 유지될 수도 있는 임계 시간이 초과되는 것 중 하나 이상을 포함하는 라이트백 정책에 기초할 수도 있다.
예시적인 제2 방법에 대한 몇몇 예에서, 제1 임계 개수는, 제2 근거리 메모리에 대한 메모리 용량 또는 유선 인터커넥트 또는 무선 인터커넥트를 통해 제1 원거리 메모리와 제2 근거리 메모리 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 각각의 대역폭 및 레이턴시에 기초할 수도 있다.
예시적인 제2 방법에 대한 몇몇 예에 따르면, 제2 임계 개수는, 유선 인터커넥트 또는 무선 인터커넥트를 통해 제1 원거리 메모리와 제1 근거리 메모리 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 데이터 대역폭 성능, 제1 디바이스를 제2 디바이스로부터 연결해제하는 것과 관련되는 시간 제한 및 제1 회로부에 의한 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지와 관련되는 사이즈에 기초할 수도 있다.
예시적인 제2 방법에 대한 몇몇 예에서, 메모리 컨텐츠의 적어도 일부를 전송하는 것은, 제1 근거리 메모리에 유지되는 더티 페이지의 동적 임계 개수를 포함하는 메모리 체킹포인트가 초과되는 것에 기초할 수도 있고, 동적 임계 개수는, 이용가능한 데이터 대역폭, 관측된 레이턴시, 또는 유선 인터커넥트 또는 무선 인터커넥트를 통해 제1 원거리 메모리와 제1 근거리 메모리 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 할당된 전력 사용량 한계치에 기초하고, 동적 임계 개수는 또한, 제2 디바이스에 유지되는 제1 원거리 메모리에 대한 메모리 컨트롤러 기록 레이턴시 및 제1 디바이스에서 유지되는 제1 근거리 메모리로부터의 메모리 컨트롤러 판독 레이턴시에 기초한다.
몇몇 예에 따르면, 예시적인 제2 방법은 또한, 제2 디바이스에 대한 연결이 종료될 것이라는 표시를 수신하는 것, 메모리 컨텐츠의 제2 사본의 적어도 일부의 제2 근거리 메모리로의 마이그레이션을 가능하게 하기 위해 제1 근거리 메모리로부터의 메모리 컨텐츠의 제2 사본을 제1 원거리 메모리로 전송하는 것, 및 메모리 컨텐츠의 제2 사본을 제1 원거리 메모리로 전송하는 것에 후속하여 제1 회로부 및 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮추는 것을 포함할 수도 있다.
예시적인 제2 방법에 대한 몇몇 예에서, 하나 이상의 애플리케이션의 적어도 일부를 실행하는 것은, 적어도 4K 해상도 스트리밍 비디오가 제1 디바이스에 커플링되는 디스플레이 상에 제시되게 하는 것, 적어도 4K 해상도 이미지 또는 그래픽이 제1 디바이스에 커플링되는 디스플레이 상에 제시되게 하는 것 또는 터치 스크린이 제1 디바이스에 커플링되는 디스플레이 상에 제공되게 하는 것 중 하나를 포함할 수도 있고, 디스플레이는 터치 입력 성능을 갖는다. 몇몇 예에서, 예시적인 제2의 적어도 하나의 머신 판독가능 매체는, 제1 회로부를 구비하는 제1 디바이스 상에서 실행되는 것에 응답하여, 제1 디바이스로 하여금, 제2 회로부를 구비하는 제2 디바이스가 제1 디바이스에 연결되었다는 표시를 검출하게 할 수도 있는 복수의 명령어를 포함한다. 제1 및 제2 회로부 각각은, 근거리 메모리 및 원거리 메모리를 구비하는 2레벨 메모리(2LM) 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수도 있다. 명령어는 또한, 제1 디바이스로 하여금, 제2 디바이스에 위치되는 제1 원거리 메모리로부터, 제2 디바이스에 위치되는 제2 근거리 메모리로부터의 메모리 컨텐츠의 사본을 수신하게 할 수도 있다. 메모리 컨텐츠는 하나 이상의 애플리케이션을 실행하도록 제2 회로부에 의해 사용하기 위한 것일 수도 있다. 명령어는 또한, 제1 디바이스로 하여금, 제1 또는 제2 디바이스에 대한 오퍼레이팅 시스템에 투명한 방식으로, 메모리 컨텐츠의 사본을 제1 디바이스에서 유지되는 제1 근거리 메모리에 저장하게 할 수도 있다. 메모리 컨텐츠의 사본은, 하나 이상의 애플리케이션을 실행하기 위한 제1 회로부에 의한 사용을 위해, 제1 근거리 메모리에 저장될 수도 있다.
제2의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에 따르면, 제1 근거리 메모리는, 제2 근거리 메모리의 제2 메모리 용량보다 더 큰 제1 메모리 용량을 구비할 수도 있다.
제2의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에서, 명령어는 또한, 제1 디바이스로 하여금, 제1 근거리 메모리에 대한 페이지 누락 표시를 수신하게 할 수도 있다. 페이지 누락은 제1 원거리 메모리에 유지되는 데이터와 관련될 수도 있다. 명령어는 또한, 제1 디바이스로 하여금, 제1 원거리 메모리에 유지되는 데이터를 획득하기 위한 메모리 액세스 요청을 제2 디바이스로 전송하게 하고, 제1 원거리 메모리로부터 데이터를 수신하게 하고 그리고 제1 근거리 메모리에 데이터의 저장을 야기하게 할 수도 있다.
제2의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에 따르면, 제2 디바이스가 연결되었다는 표시의 검출은, 유선 인터커넥트를 통해 제2 디바이스와 연결하기 위한 유선 통신 채널을 제1 디바이스가 확립하는 것을 가능하게 하는 유선 인터페이스에 제1 디바이스가 커플링하는 것에 대한 응답 또는 무선 인터커넥트를 통해 제2 디바이스와 연결하기 위한 무선 통신 채널을 제1 디바이스가 확립하는 것을 가능하게 하는 소정의 물리적 근접범위 내에 제1 디바이스가 다가오는 것에 대한 응답일 수도 있다. 제2의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에서, 명령어는 또한, 제1 디바이스로 하여금, 제1 근거리 메모리로부터, 메모리 컨텐츠의 적어도 일부를 제2 디바이스에서 유지되는 제1 원거리 메모리로 전송하게 하고, 메모리 컨텐츠의 적어도 일부는 제1 회로부에 의한 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지를 포함한다.
제2의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에 따르면, 명령어는 또한, 제1 디바이스로 하여금, 제1 근거리 메모리에 유지되는 더티 페이지의 제1 또는 제2 임계 개수가 초과되는 것 또는 더티 페이지가 제1 근거리 메모리에 유지될 수도 있는 임계 시간이 초과되는 것 중 하나 이상을 포함하는 라이트백 정책에 기초하여, 메모리 컨텐츠의 적어도 일부를 전송하게 할 수도 있다.
제2의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에서, 명령어는 또한, 제1 디바이스로 하여금, 제1 근거리 메모리에 유지되는 더티 페이지의 동적 임계 개수를 포함하는 메모리 체킹포인트가 초과되는 것에 기초하여 메모리 컨텐츠의 적어도 일부를 전송하게 할 수도 있고, 동적 임계 개수는 이용가능한 데이터 대역폭, 관측된 레이턴시, 또는 유선 인터커넥트 또는 무선 인터커넥트를 통해 제1 원거리 메모리와 제1 근거리 메모리 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 할당된 전력 사용량 한계치에 기초하고, 동적 임계 개수는 또한, 제2 디바이스에 유지되는 제1 원거리 메모리에 대한 메모리 컨트롤러 기록 레이턴시 및 제1 디바이스에서 유지되는 제1 근거리 메모리로부터의 메모리 컨트롤러 판독 레이턴시에 기초한다.
제2의 적어도 하나의 머신 판독가능 매체에 대한 몇몇 예에 따르면, 명령어는 또한, 제1 디바이스로 하여금, 제2 디바이스에 대한 연결이 종료될 것이라는 표시를 수신하게 하고, 메모리 컨텐츠의 제2 사본의 적어도 일부의 제2 근거리 메모리로의 마이그레이션을 가능하게 하기 위해, 제1 근거리 메모리로부터의 메모리 컨텐츠의 제2 사본을 제1 원거리 메모리로 전송하게 하고 그리고 메모리 컨텐츠의 제2 사본을 제1 원거리 메모리로 전송하는 것에 후속하여, 제1 회로부 및 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮추게 할 수도 있다.
기술적 개시의 본질을 독자가 재빨리 확인하는 것을 허용할 요약서를 요구하는 37 C.F.R. 섹션 1.72(b)를 준수하기 위해 요약서가 제공된다는 것을 강조한다. 요약서는, 그것이 청구범위의 범위 또는 의미를 해석하거나 또는 제한하도록 사용되지 않을 것이라는 이해와 함께 제출된다. 또한, 상기의 상세한 설명에서, 다양한 특징은 본 개시의 능률화의 목적을 위해 단일의 실시형태로 함께 그룹화된다는 것을 알 수 있다. 본 개시의 방법은, 청구된 예가 각각의 청구항에서 명시적으로 열거되는 것보다 더 많은 피쳐를 요구한다는 의도를 반영하는 것으로 해석되어선 안된다. 대신, 하기의 청구범위가 반영하는 바와 같이, 본 발명의 주제는 단일의 개시된 예의 모든 피쳐보다 더 적은 피쳐 내에 존재한다. 따라서, 하기의 청구범위는 본 문서에 의해 상세한 설명에 통합되고, 각각의 청구항은 별개의 예로서 자립한다. 첨부의 청구범위에서, 용어 "포함하는(including)" 및 "여기서(in which)"는 각각 용어 "포함하는(comprising)" 및 "여기서(wherein)"의 쉬운 영어의 등가적 표현(equivalent)으로 사용된다. 또한, 용어 "제1", "제2", "제3" 등등은 라벨에 불과하며, 그들 목적에 대해 수치적 요건을 부과하도록 의도되지는 않는다.
비록 본 주재가 구조적 피쳐 및/또는 방법론적 액트에 고유한 언어로 설명되었지만, 첨부의 청구범위에서 정의되는 주제는 상기에서 설명되는 특정 피쳐 또는 액트로 반드시 제한되는 것은 아니다는 것이 이해될 것이다. 오히려, 상기에서 설명되는 특정 피쳐 및 액트는 청구범위를 구현하는 예시적인 형태로서 고려된다.

Claims (27)

  1. 제1 근거리 메모리(near memory) 및 제1 원거리 메모리(far memory)를 포함하는 2레벨 메모리(two-level memory; 2LM) 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제1 회로부와,
    제2 근거리 메모리를 또한 포함하는 상기 2LM 아키텍처를 사용하여 상기 하나 이상의 애플리케이션을 실행할 수 있는 제2 회로부를 검출하는 검출 로직과,
    상기 제1 원거리 메모리와 상기 제2 근거리 메모리 사이에서 연결을 야기하는 연결 로직과,
    상기 제1 근거리 메모리로부터의 메모리 컨텐츠의 사본을 상기 제2 근거리 메모리로 마이그레이션하게 하기 위해 상기 제1 원거리 메모리를 활용하는 마이그레이션 로직(a migration logic)을 포함하고,
    상기 메모리 컨텐츠의 사본은 오퍼레이팅 시스템에 투명한 방식으로 마이그레이션되는
    장치.
  2. 제 1 항에 있어서,
    상기 제1 회로부, 상기 제1 근거리 메모리 및 상기 제1 원거리 메모리는 제1 디바이스에 위치되며 상기 제2 회로부 및 상기 제2 근거리 메모리는 제2 디바이스에 위치되는
    장치.
  3. 제 1 항에 있어서,
    상기 제1 근거리 메모리는 상기 제2 근거리 메모리의 제2 메모리 용량보다 더 작은 제1 메모리 용량을 갖는
    장치.
  4. 제 1 항에 있어서,
    상기 제1 근거리 메모리의 메모리 컨텐츠의 사본의 상기 제2 근거리 메모리로의 마이그레이션에 후속하여 상기 제1 회로부 및 상기 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮추고 상기 제1 원거리 메모리로의 전력이 계속 인가되게 하는 전력 로직을 포함하는
    장치.
  5. 제 4 항에 있어서,
    상기 연결 로직은 상기 제1 원거리 메모리와 상기 제2 근거리 메모리 사이의 상기 연결이 종료될 것이라는 표시를 수신하며,
    상기 전력 로직은 상기 제1 회로부 및 상기 제1 근거리 메모리로 하여금 상기 제1 회로부 및 상기 제1 근거리 메모리의 전력을 더 높은 전력 상태로 전력을 높이게 하며,
    상기 마이그레이션 로직은 상기 제2 근거리 메모리로부터 메모리 컨텐츠의 제2 사본을 수신하고 상기 메모리 컨텐츠의 제2 사본이 상기 제1 원거리 메모리에 저장되게 하고 상기 메모리 컨텐츠의 제2 사본의 적어도 일부가 상기 제1 근거리 메모리에 저장되게 하는
    장치.
  6. 제 5 항에 있어서,
    상기 마이그레이션 로직은, 상기 제2 근거리 메모리에 이전에 저장되고 상기 제2 회로부에 의해 실행될 때 상기 하나 이상의 애플리케이션에 의해 사용되는 메모리 페이지를 저장하기 위한 메모리 페이징 정책(a memory paging policy)에 기초하여 상기 메모리 컨텐츠의 제2 사본의 적어도 일부가 상기 제1 근거리 메모리에 저장되게 하고, 상기 메모리 페이징 정책은, 액티브하게 사용된 메모리 페이지를 저장하는 것, 상기 메모리 페이지와 관련되는 수명(age)에 기초하여 저장하는 것 또는 상기 메모리 페이지와 관련되는 액세스 패턴에 기초하여 저장하는 것 중 적어도 하나를 포함하는
    장치.
  7. 제 1 항에 있어서,
    상기 제2 근거리 메모리에 대한 페이지 누락(a page miss)에 기초하여 상기 제1 원거리 메모리에 대한 메모리 액세스 요청을 수신하고, 상기 페이지 누락과 관련되는 데이터를 상기 제2 근거리 메모리에 제공하기 위해 상기 제1 원거리 메모리에 대한 상기 메모리 액세스 요청이 이행되게 하는 요청 로직을 포함하는
    장치.
  8. 제 1 항에 있어서,
    상기 마이그레이션 로직은, 상기 제2 근거리 메모리로부터 메모리 컨텐츠의 적어도 일부를 수신하며, 상기 메모리 컨텐츠의 적어도 일부는 상기 제2 회로부에 의한 상기 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지(dirty page)를 포함하고, 상기 마이그레이션 로직은 상기 하나 이상의 더티 페이지가 상기 제1 원거리 메모리에 저장되게 하는
    장치.

  9. 제 8 항에 있어서,
    상기 마이그레이션 로직은, 상기 제2 근거리 메모리에 유지되는 더티 페이지의 제1 임계 개수(threshold number) 또는 제2 임계 개수가 초과되는 것 또는 더티 페이지가 상기 제2 근거리 메모리에 유지될 수도 있는 임계 시간이 초과되는 것 중 하나 이상을 포함하는 라이트백 정책(write-back policy)에 기초하여 상기 메모리 컨텐츠의 적어도 일부를 수신하는
    장치.
  10. 제 8 항에 있어서,
    상기 마이그레이션 로직은, 상기 제2 근거리 메모리에 유지되는 더티 페이지의 동적 임계 개수를 포함하는 메모리 체킹포인트가 초과되는 것에 기초하여 상기 메모리 컨텐츠의 적어도 일부를 수신하며, 상기 동적 임계 개수는 이용가능한 데이터 대역폭, 관측된 레이턴시, 또는 유선 인터커넥트 또는 무선 인터커넥트를 통해 상기 제1 원거리 메모리와 상기 제2 근거리 메모리 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 할당된 전력 사용량 한계치에 기초하고, 상기 동적 임계 개수는 또한, 상기 제1 원거리 메모리에 대한 메모리 컨트롤러 기록 레이턴시 및 상기 제2 근거리 메모리로부터의 메모리 컨트롤러 판독 레이턴시에 기초하는
    장치.
  11. 제1 회로부 상에서 하나 이상의 애플리케이션을 실행하는 단계 - 상기 제1 회로부는 제1 근거리 메모리 및 제1 원거리 메모리를 포함하는 2레벨 메모리(2LM)를 사용하여 상기 하나 이상의 애플리케이션을 실행할 수 있음 - 와,
    제2 근거리 메모리를 또한 포함하는 상기 2LM 아키텍처를 사용하여 상기 하나 이상의 애플리케이션을 실행할 수 있는 제2 회로부를 검출하는 단계와,
    상기 제1 원거리 메모리를 상기 제2 근거리 메모리에 연결하는 단계와,
    상기 제1 근거리 메모리로부터의 메모리 컨텐츠의 사본을 상기 제2 근거리 메모리로 마이그레이션하기 위해 상기 제1 원거리 메모리를 활용하는 단계를 포함하고,
    상기 메모리 컨텐츠의 사본은 오퍼레이팅 시스템에 투명한 방식으로 마이그레이션되는
    방법.
  12. 제 11 항에 있어서,
    상기 제1 회로부, 상기 제1 근거리 메모리 및 상기 제1 원거리 메모리는 제1 디바이스에 위치되며 상기 제2 회로부 및 상기 제2 근거리 메모리는 제2 디바이스에 위치되는
    방법.
  13. 제 11 항에 있어서,
    상기 제1 근거리 메모리의 메모리 컨텐츠의 사본의 상기 제2 근거리 메모리로의 상기 마이그레이션에 후속하여 상기 제1 회로부 및 상기 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮추는 단계와,
    상기 제1 원거리 메모리에 계속 전력을 인가하는 단계를 포함하는
    방법.
  14. 복수의 명령어를 포함하는 적어도 하나의 머신 판독가능 매체로서,
    상기 복수의 명령어는, 제1 회로부를 구비하는 제1 디바이스 상에서 실행되는 것에 응답하여, 상기 제1 디바이스로 하여금,
    하나 이상의 애플리케이션을 실행하게 하고 - 상기 제1 회로부는 제1 근거리 메모리 및 제1 원거리 메모리를 포함하는 2레벨 메모리(2LM)를 사용하여 상기 하나 이상의 애플리케이션을 실행할 수 있음 - ,
    제2 근거리 메모리를 또한 포함하는 상기 2LM 아키텍처를 사용하여 상기 하나 이상의 애플리케이션을 실행할 수 있는 제2 회로부를 검출하게 하고,
    상기 제1 원거리 메모리를 상기 제2 근거리 메모리에 연결하게 하고,
    상기 제1 근거리 메모리로부터의 메모리 컨텐츠의 사본을 상기 제2 근거리 메모리로 마이그레이션하기 위해 상기 제1 원거리 메모리를 활용 - 상기 메모리 컨텐츠의 사본은 오퍼레이팅 시스템에 투명한 방식으로 마이그레이션됨 - 하게 하고,
    상기 제1 근거리 메모리의 메모리 컨텐츠의 사본의 상기 제2 근거리 메모리로의 상기 마이그레이션에 후속하여 상기 제1 회로부 및 상기 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮추게 하고,
    상기 제1 원거리 메모리에 계속 전력을 인가하게 하는
    적어도 하나의 머신 판독가능 매체.
  15. 제 14 항에 있어서,
    상기 제1 회로부, 상기 제1 근거리 메모리 및 상기 제1 원거리 메모리는 상기 제1 디바이스에 위치되며, 상기 제2 회로부 및 상기 제2 근거리 메모리는 제2 디바이스에 위치되는
    적어도 하나의 머신 판독가능 매체.
  16. 제 14 항에 있어서,
    상기 명령어는 또한 상기 제1 디바이스로 하여금,
    상기 제2 근거리 메모리로부터 메모리 컨텐츠의 적어도 일부를 수신 - 상기 메모리 컨텐츠의 적어도 일부는 상기 제2 회로부에 의한 상기 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지를 포함함 - 하게 하고,
    상기 수신된 메모리 컨텐츠의 적어도 일부가 상기 제1 원거리 메모리에 저장되게 하는
    적어도 하나의 머신 판독가능 매체.
  17. 제 16 항에 있어서,
    상기 명령어는 또한, 상기 제1 디바이스로 하여금, 상기 제2 근거리 메모리에 유지되는 더티 페이지의 제1 임계 개수 또는 제2 임계 개수가 초과되는 것 또는 더티 페이지가 상기 제2 근거리 메모리에 유지될 수도 있는 임계 시간이 초과되는 것 중 하나 이상을 포함하는 라이트백 정책에 기초하여 상기 메모리 컨텐츠의 적어도 일부를 수신하게 하는
    적어도 하나의 머신 판독가능 매체.
  18. 제 16 항에 있어서,
    상기 명령어는 또한, 상기 제1 디바이스로 하여금, 상기 제2 근거리 메모리에 유지되는 더티 페이지의 동적 임계 개수를 포함하는 메모리 체크포인팅이 초과되는 것에 기초하여 상기 메모리 컨텐츠의 적어도 일부를 수신하게 하고, 상기 동적 임계 개수는, 이용가능한 데이터 대역폭, 관측된 레이턴시, 또는 유선 인터커넥트 또는 무선 인터커넥트를 통해 상기 제1 원거리 메모리와 상기 제2 근거리 메모리 사이에서 메모리 컨텐츠의 제2 사본을 마이그레이션하기 위한 할당된 전력 사용량 한계치에 기초하고, 상기 동적 임계 개수는 또한, 상기 제1 원거리 메모리에 대한 메모리 컨트롤러 기록 레이턴시 및 상기 제2 근거리 메모리로부터의 메모리 컨트롤러 판독 레이턴시에 기초하는
    적어도 하나의 머신 판독가능 매체.
  19. 제1 근거리 메모리 및 제1 원거리 메모리를 포함하는 2레벨 메모리(2LM) 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있는 제1 회로부와,
    상기 2LM 아키텍처에 포함되는 제2 근거리 메모리 - 상기 제2 근거리 메모리는, 상기 하나 이상의 애플리케이션이 상기 제2 회로부에 의해 실행될 때 상기 하나 이상의 애플리케이션에 의해 사용될 수 있음 - 에 대한 연결의 표시를 검출하는 검출 로직과,
    상기 제1 원거리 메모리로부터, 상기 하나 이상의 애플리케이션을 실행하기 위해 상기 제2 회로부에 의해 사용되는 상기 제2 근거리 메모리로부터 전송되는 메모리 컨텐츠의 사본을 수신하는 복제 로직을 포함하고,
    상기 복제 로직은, 오퍼레이팅 시스템에 투명한 방식으로 상기 사본이 상기 제1 근거리 메모리에 저장되게 하고, 상기 저장된 사본은 상기 하나 이상의 애플리케이션을 실행하기 위해 상기 제1 회로부에 의해 사용하기 위한 것인
    장치.
  20. 제 19 항에 있어서,
    상기 제1 근거리 메모리에 대한 페이지 누락 표시를 수신하는 요청 로직을 포함하고, 상기 페이지 누락은 상기 제1 원거리 메모리에 유지되는 데이터와 관련되고, 상기 요청 로직은,
    상기 데이터를 획득하기 위한 메모리 액세스 요청을 상기 제1 원거리 메모리에 전송하고,
    상기 제1 원거리 메모리로부터 상기 데이터를 수신하고,
    상기 수신된 데이터의 상기 제1 근거리 메모리로의 복제를 야기하는
    장치.
  21. 제 19 항에 있어서,
    상기 제1 근거리 메모리로부터, 메모리 컨텐츠의 적어도 일부를 상기 제1 원거리 메모리로 전송하는 라이트백 로직을 포함하고, 상기 메모리 컨텐츠의 적어도 일부는, 상기 제1 회로부에 의한 상기 하나 이상의 애플리케이션의 실행 동안 생성되는 하나 이상의 더티 페이지를 포함하고, 상기 메모리 컨텐츠의 적어도 일부를 전송하는 상기 라이트백 로직은, 상기 제1 근거리 메모리에 유지되는 더티 페이지의 제1 임계 개수 또는 제2 임계 개수가 초과되는 것 또는 더티 페이지가 상기 제1 근거리 메모리에 유지될 수도 있는 임계 시간이 초과되는 것 중 하나 이상을 포함하는 라이트백 정책에 기초하는
    장치.
  22. 제 19 항에 있어서,
    상기 검출 로직은 상기 제2 근거리 메모리에 대한 연결이 종료될 것이라는 표시를 수신하며,
    상기 장치는,
    메모리 컨텐츠의 제2 사본의 적어도 일부의 상기 제2 근거리 메모리로의 마이그레이션을 가능하게 하기 위해, 상기 제1 근거리 메모리로부터의 메모리 컨텐츠의 제2 사본을 상기 제1 원거리 메모리로 전송하는 마이그레이션 로직과,
    상기 메모리 컨텐츠의 제2 사본의 상기 제1 원거리 메모리로의 상기 전송에 후속하여, 상기 제1 회로부 및 상기 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮추는 전력 로직을 포함하는
    장치.
  23. 제1 회로부를 구비하는 제1 디바이스에서, 제2 회로부를 구비하는 제2 디바이스가 상기 제1 디바이스에 연결되었다는 표시를 검출하는 단계 - 상기 제1 회로부 및 상기 제2 회로부 각각은 근거리 메모리 및 원거리 메모리를 구비하는 2레벨(2LM) 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있음 - 와,
    상기 제2 디바이스에 위치되는 제1 원거리 메모리로부터, 상기 제2 디바이스에 위치되는 제2 근거리 메모리로부터의 메모리 컨텐츠의 사본을 수신하는 단계 - 상기 메모리 컨텐츠는 상기 하나 이상의 애플리케이션을 실행하기 위해 상기 제2 회로부에 의해 사용됨 - 와,
    상기 제1 디바이스 또는 상기 제2 디바이스에 대한 오퍼레이팅 시스템에 투명한 방식으로, 상기 제1 디바이스에 위치되는 제1 근거리 메모리에 상기 메모리 컨텐츠의 사본을 저장하는 단계 - 상기 메모리 컨텐츠의 사본은 상기 하나 이상의 애플리케이션을 실행하기 위해 상기 제1 회로부에 의한 사용을 위한 상기 제1 근거리 메모리에 저장됨 - 와,
    상기 제1 근거리 메모리에 대한 페이지 누락 표시를 수신하는 단계 - 상기 페이지 누락은 상기 제1 원거리 메모리에 유지되는 데이터와 관련됨 - 와,
    상기 제1 원거리 메모리에 유지되는 상기 데이터를 획득하기 위한 메모리 액세스 요청을 상기 제2 디바이스로 전송하는 단계와,
    상기 제1 원거리 메모리로부터 상기 데이터를 수신하는 단계와,
    상기 데이터를 상기 제1 근거리 메모리에 저장하는 단계를 포함하는
    방법.
  24. 제 23 항에 있어서,
    상기 제2 디바이스에 대한 연결이 종료될 것이라는 표시를 수신하는 단계와,
    메모리 컨텐츠의 제2 사본의 적어도 일부의 상기 제2 근거리 메모리로의 마이그레이션을 가능하게 하기 위해, 상기 제1 근거리 메모리로부터의 상기 메모리 컨텐츠의 제2 사본을 상기 제1 원거리 메모리로 전송하는 단계와,
    상기 메모리 컨텐츠의 제2 사본의 상기 제1 원거리 메모리로의 상기 전송에 후속하여, 상기 제1 회로부 및 상기 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮추는 단계를 포함하는
    방법.
  25. 복수의 명령어를 포함하는 적어도 하나의 머신 판독가능 매체로서,
    상기 복수의 명령어는, 제1 회로부를 구비하는 제1 디바이스 상에서 실행되는 것에 응답하여, 상기 제1 디바이스로 하여금,
    제2 회로부를 구비하는 제2 디바이스가 상기 제1 디바이스에 연결되었다는 표시를 검출하게 하고 - 상기 제1 회로부 및 상기 제2 회로부 각각은 근거리 메모리 및 원거리 메모리를 구비하는 2레벨(2LM) 아키텍처를 사용하여 하나 이상의 애플리케이션을 실행할 수 있음 -,
    상기 제2 디바이스에 위치되는 제1 원거리 메모리로부터, 상기 제2 디바이스에 위치되는 제2 근거리 메모리로부터의 메모리 컨텐츠의 사본을 수신 - 상기 메모리 컨텐츠는 상기 하나 이상의 애플리케이션을 실행하기 위해 상기 제2 회로부에 의한 사용을 위한 것임 - 하게 하고,
    상기 제1 디바이스 또는 상기 제2 디바이스에 대한 오퍼레이팅 시스템에 투명한 방식으로, 상기 제1 디바이스에 위치되는 제1 근거리 메모리에 상기 메모리 컨텐츠의 사본을 저장 - 상기 메모리 컨텐츠의 사본은 상기 하나 이상의 애플리케이션을 실행하기 위해 상기 제1 회로부에 의한 사용을 위한 상기 제1 근거리 메모리에 저장됨 - 하게 하는
    적어도 하나의 머신 판독가능 매체.
  26. 제 25 항에 있어서,
    상기 명령어는 또한 상기 제1 디바이스로 하여금,
    상기 제1 근거리 메모리에 대한 페이지 누락 표시 - 상기 페이지 누락은 상기 제1 원거리 메모리에 유지되는 데이터와 관련됨 - 를 수신하게 하고,
    상기 제1 원거리 메모리에 유지되는 데이터를 획득하기 위한 메모리 액세스 요청을 상기 제2 디바이스로 전송하게 하고,
    상기 제1 원거리 메모리로부터 상기 데이터를 수신하게 하고,
    상기 제1 근거리 메모리에 상기 데이터의 상기 저장을 야기하게 하는
    적어도 하나의 머신 판독가능 매체.

  27. 제 25 항에 있어서,
    상기 명령어는 또한 상기 제1 디바이스로 하여금,
    상기 제2 디바이스에 대한 상기 연결이 종료될 것이라는 표시를 수신하게 하고,
    메모리 컨텐츠의 제2 사본의 적어도 일부의 상기 제2 근거리 메모리로의 마이그레이션을 가능하게 하기 위해, 상기 제1 근거리 메모리로부터의 상기 메모리 컨텐츠의 제2 사본을 상기 제1 원거리 메모리로 전송하게 하고,
    상기 메모리 컨텐츠의 제2 사본의 상기 제1 원거리 메모리로의 상기 전송에 후속하여, 상기 제1 회로부 및 상기 제1 근거리 메모리의 전력을 더 낮은 전력 상태로 낮추는 하는
    적어도 하나의 머신 판독가능 매체.
KR1020167005047A 2013-09-27 2013-09-27 디바이스들 간의 메모리 리소스를 구성하기 위한 장치, 방법 및 저장 매체 KR101785301B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/062310 WO2015047314A1 (en) 2013-09-27 2013-09-27 Techniques to compose memory resources across devices

Publications (2)

Publication Number Publication Date
KR20160037987A true KR20160037987A (ko) 2016-04-06
KR101785301B1 KR101785301B1 (ko) 2017-11-15

Family

ID=52741325

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167005047A KR101785301B1 (ko) 2013-09-27 2013-09-27 디바이스들 간의 메모리 리소스를 구성하기 위한 장치, 방법 및 저장 매체

Country Status (7)

Country Link
US (2) US9798574B2 (ko)
EP (1) EP3049943B1 (ko)
JP (1) JP6366717B2 (ko)
KR (1) KR101785301B1 (ko)
CN (1) CN105556493B (ko)
TW (1) TWI506531B (ko)
WO (1) WO2015047314A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11012372B2 (en) 2017-04-04 2021-05-18 Samsung Electronics Co., Ltd. Electronic apparatus and method for control thereof

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9268836B2 (en) 2013-11-14 2016-02-23 Vmware, Inc. Intelligent data propagation in a highly distributed environment
US9230001B2 (en) 2013-11-14 2016-01-05 Vmware, Inc. Intelligent data propagation using performance monitoring
WO2016149895A1 (en) * 2015-03-23 2016-09-29 Intel Corporation Execution context migration method and apparatus
US9971708B2 (en) * 2015-12-02 2018-05-15 Advanced Micro Devices, Inc. System and method for application migration between docking station and dockable device
US10437731B2 (en) * 2015-12-24 2019-10-08 Intel Corporation Multi-level non-volatile cache with selective store
US10248584B2 (en) * 2016-04-01 2019-04-02 Microsoft Technology Licensing, Llc Data transfer between host and peripheral devices
JP2018032256A (ja) * 2016-08-25 2018-03-01 東芝メモリ株式会社 メモリシステムおよびプロセッサシステム
US10628367B2 (en) 2016-12-28 2020-04-21 Intel Corporation Techniques for dynamically modifying platform form factors of a mobile device
US10901894B2 (en) * 2017-03-10 2021-01-26 Oracle International Corporation Allocating and accessing memory pages with near and far memory blocks from heterogeneous memories
US10339067B2 (en) 2017-06-19 2019-07-02 Advanced Micro Devices, Inc. Mechanism for reducing page migration overhead in memory systems
CN109324752B (zh) * 2017-07-31 2023-11-03 伊姆西Ip控股有限责任公司 用于控制脏页生成的系统、介质和方法
KR102430209B1 (ko) * 2017-09-07 2022-08-05 삼성전자주식회사 저장 장치 및 저장 장치에 포함된 컨트롤러들
US10698766B2 (en) * 2018-04-18 2020-06-30 EMC IP Holding Company LLC Optimization of checkpoint operations for deep learning computing
WO2020024733A1 (en) * 2018-08-01 2020-02-06 Huawei Technologies Co., Ltd. Multi-instance 2lm architecture for scm applications
US11733902B2 (en) * 2021-04-30 2023-08-22 International Business Machines Corporation Integrating and increasing performance of disaggregated memory in operating systems

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6981096B1 (en) 1998-10-02 2005-12-27 International Business Machines Corporation Mapping and logic for combining L1 and L2 directories and/or arrays
JP2002157212A (ja) * 2000-11-17 2002-05-31 Hitachi Ltd 情報処理システム並びに携帯用電子機器および情報処理装置
US6922753B2 (en) * 2002-09-26 2005-07-26 International Business Machines Corporation Cache prefetching
TWI294569B (en) * 2004-01-16 2008-03-11 Ip First Llc Apparatus and method for performing fast pop operation from random access cache memory and computer-readable storage medium
JP2005241752A (ja) * 2004-02-24 2005-09-08 Seiko Epson Corp 情報表示装置および情報表示システム
US7730335B2 (en) 2004-06-10 2010-06-01 Marvell World Trade Ltd. Low power computer with main and auxiliary processors
SG162825A1 (en) * 2005-06-24 2010-07-29 Research In Motion Ltd System and method for managing memory in a mobile device
US7814279B2 (en) * 2006-03-23 2010-10-12 International Business Machines Corporation Low-cost cache coherency for accelerators
JP5083757B2 (ja) * 2007-04-19 2012-11-28 インターナショナル・ビジネス・マシーンズ・コーポレーション データをキャッシュする技術
US8527709B2 (en) * 2007-07-20 2013-09-03 Intel Corporation Technique for preserving cached information during a low power mode
US8094500B2 (en) 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
EP2374063B1 (en) * 2009-01-05 2017-11-22 SanDisk Technologies LLC Non-volatile memory and method with write cache partitioning
US8725953B2 (en) * 2009-01-21 2014-05-13 Arm Limited Local cache power control within a multiprocessor system
US20100228922A1 (en) * 2009-03-09 2010-09-09 Deepak Limaye Method and system to perform background evictions of cache memory lines
US8478945B2 (en) * 2010-02-01 2013-07-02 International Business Machines Corporation Dynamic management of destage tasks in a storage controller
US8533505B2 (en) 2010-03-01 2013-09-10 Arm Limited Data processing apparatus and method for transferring workload between source and destination processing circuitry
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8612676B2 (en) * 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US20130046935A1 (en) * 2011-08-18 2013-02-21 Microsoft Corporation Shared copy cache across networked devices
CN103946811B (zh) 2011-09-30 2017-08-11 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
EP2761472B1 (en) * 2011-09-30 2020-04-01 Intel Corporation Memory channel that supports near memory and far memory access
US20130086298A1 (en) 2011-10-04 2013-04-04 International Business Machines Corporation Live Logical Partition Migration with Stateful Offload Connections Using Context Extraction and Insertion
US20130219125A1 (en) * 2012-02-21 2013-08-22 Microsoft Corporation Cache employing multiple page replacement algorithms
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11012372B2 (en) 2017-04-04 2021-05-18 Samsung Electronics Co., Ltd. Electronic apparatus and method for control thereof

Also Published As

Publication number Publication date
EP3049943A4 (en) 2017-05-24
US9798574B2 (en) 2017-10-24
CN105556493A (zh) 2016-05-04
JP2016529636A (ja) 2016-09-23
EP3049943B1 (en) 2018-10-24
TW201528123A (zh) 2015-07-16
KR101785301B1 (ko) 2017-11-15
EP3049943A1 (en) 2016-08-03
TWI506531B (zh) 2015-11-01
US10545787B2 (en) 2020-01-28
CN105556493B (zh) 2018-12-11
US20150095598A1 (en) 2015-04-02
WO2015047314A1 (en) 2015-04-02
US20180267826A1 (en) 2018-09-20
JP6366717B2 (ja) 2018-08-01

Similar Documents

Publication Publication Date Title
KR101785301B1 (ko) 디바이스들 간의 메모리 리소스를 구성하기 위한 장치, 방법 및 저장 매체
US10331186B2 (en) Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states
EP2960785B1 (en) Techniques to compose memory resources across devices and reduce transitional latency
US10560081B2 (en) Method, apparatus, system for centering in a high performance interconnect
US9606602B2 (en) Method and apparatus to prevent voltage droop in a computer
JP6038699B2 (ja) 電子機器
US20150007190A1 (en) Techniques to aggregate compute, memory and input/output resources across devices
US10948968B2 (en) Controlling processor performance scaling based on context
CN107005896B (zh) 在无线网络之间的语音移交
WO2016105953A1 (en) A method, apparatus, system for embedded stream lanes in a high-performance interconnect
US20150186311A1 (en) Smart direct memory access
US20210318980A1 (en) Peer-to-peer link sharing for upstream communications from xpus to a host processor
US20170351430A1 (en) Method, apparatus, and system for cache coherency using a coarse directory
KR20160034964A (ko) 컴퓨팅 디바이스에서의 전력 소비 감축

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