KR20150136075A - 공유 메모리 시스템 - Google Patents

공유 메모리 시스템 Download PDF

Info

Publication number
KR20150136075A
KR20150136075A KR1020157026674A KR20157026674A KR20150136075A KR 20150136075 A KR20150136075 A KR 20150136075A KR 1020157026674 A KR1020157026674 A KR 1020157026674A KR 20157026674 A KR20157026674 A KR 20157026674A KR 20150136075 A KR20150136075 A KR 20150136075A
Authority
KR
South Korea
Prior art keywords
memory address
data
external memory
memory device
address space
Prior art date
Application number
KR1020157026674A
Other languages
English (en)
Inventor
그레그 비 레사르트리
앤드류 알 휠러
러스 더블유 허렐
Original Assignee
휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. filed Critical 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피.
Publication of KR20150136075A publication Critical patent/KR20150136075A/ko

Links

Images

Classifications

    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/10Address translation
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Transfer Systems (AREA)

Abstract

제 1 컴퓨팅 디바이스 내의 로컬 메모리 디바이스에서 제 2 컴퓨팅 디바이스 내의 외부 메모리 디바이스로 데이터를 전달하는 방법이 설명된다. 일례에서, 방법은 외부 메모리 디바이스에 대한 데이터를 저장하도록 로컬 메모리 디바이스를 구성하는 단계와, 외부 메모리 디바이스로부터 데이터에 대한 요청을 검출하는 단계를 포함한다. 방법은 또한 요청된 데이터에 대응하는 메모리 어드레스를 외부 메모리 어드레스에서 로컬 메모리 어드레스로 변환하는 단계를 포함한다. 추가적으로, 방법은 로컬 메모리 어드레스에 기초하여 요청된 데이터를 불러오는 단계와, 요청된 데이터를 제 2 컴퓨팅 디바이스로 전달하는 단계를 포함한다.

Description

공유 메모리 시스템{SHARED MEMORY SYSTEM}
현대의 컴퓨팅 시스템은 그 중에서도 프로세서 실행 시간 및 메모리 소비와 같은 상이한 양의 리소스를 사용할 수 있는 광범위한 소프트웨어 애플리케이션을 실행할 수 있다. 예컨대, 일부 소프트웨어 애플리케이션은 상당량의 프로세서 실행 시간을 사용하게 하는 복잡한 동작을 수행할 수 있다. 다른 예에서, 일부 소프트웨어 애플리케이션은 메모리 집중적일 수 있으므로 소프트웨어 애플리케이션의 실행 동안 결과를 저장하는 데 대량의 메모리를 사용한다. 일부 실시예에서, 소프트웨어 애플리케이션은 다수의 컴퓨팅 디바이스 간에 데이터를 공유할 수 있다.
후속하는 상세한 설명에서 도면과 관련하여 특정 예가 설명된다.
도 1은 로컬 메모리 디바이스와 외부 메모리 디바이스 간에 데이터를 공유할 수 있는 예시적인 컴퓨팅 시스템의 블록도이다.
도 2는 로컬 메모리 디바이스와 외부 메모리 디바이스 간에 데이터를 공유하는 방법의 예를 도시하는 프로세스 흐름도이다.
도 3은 로컬 메모리 디바이스의 메모리 어드레스 공간과 외부 메모리 디바이스의 메모리 어드레스 공간 간에 변환하는 데 사용될 수 있는 구성 테이블의 예이다.
도 4는 외부 메모리 디바이스로부터 데이터를 요청하는 방법의 예를 도시하는 프로세스 흐름도이다.
도 5는 로컬 메모리 디바이스와 외부 메모리 디바이스 간에 데이터를 공유할 수 있는 유형적인 비일시적 컴퓨터 판독가능 매체의 예를 도시하는 블록도이다.
본 명세서에 설명된 청구대상의 실시예에 따르면, 컴퓨팅 시스템은 2 개의 개별 메모리 공간을 사용하여 로컬 메모리 디바이스와 외부 메모리 디바이스 간에 데이터를 공유할 수 있다. 일부 실시예에서, 로컬 메모리 디바이스는 제 1 컴퓨팅 시스템에 존재하지만, 외부 메모리 디바이스는 제 2 컴퓨팅 시스템에 존재한다. 로컬 메모리 디바이스 및 외부 메모리 디바이스는 둘 다 메모리 어드레스 공간을 사용하여 메모리 제어기를 통해 프로세서로부터 액세스가능한 데이터를 저장할 수 있다. 여기서 지칭되는 메모리 어드레스 공간은 이산 메모리 어드레스의 임의의 적합한 범위를 포함하고, 각각의 이산 메모리 어드레스는 임의의 적합한 컴퓨팅 디바이스에 저장된 데이터에 대응할 수 있다. 일부 예에서, 이산 메모리 어드레스는 그 중에서도 하드 드라이브와 고체 상태 드라이브의 섹터, 네트워크 호스트, 주변 저장 디바이스 또는 DRAM, PCM, STT_MRAM 또는 ReRAM 메모리 내의 캐시 라인에 대응할 수 있다. 일부 실시예에서, 컴퓨팅 시스템은 로컬 메모리 디바이스에 대응하는 로컬 메모리 어드레스 공간을 외부 메모리 디바이스에 대응하는 외부 메모리 어드레스 공간으로 변환함으로써 외부 메모리 디바이스에 저장된 데이터를 불러올 수 있다.
도 1은 로컬 메모리 디바이스와 외부 메모리 디바이스 간에 데이터를 공유할 수 있는 컴퓨팅 시스템(100)의 예의 블록도이다. 컴퓨팅 시스템(100)은 그 중에서도 예컨대, 서버 컴퓨터, 모바일폰, 랩톱 컴퓨터, 데스크톱 컴퓨터 또는 태블릿 컴퓨터를 포함할 수 있다. 컴퓨팅 시스템(100)은 저장된 인스트럭션을 실행하도록 구성되는 프로세서(102)를 포함할 수 있다. 프로세서(102)는 단일 코어 프로세서, 멀티코어 프로세서, 컴퓨팅 클러스터 또는 임의의 수의 다른 적합한 구성일 수 있다.
프로세서(102)는 시스템 버스(104)(그 중에서도 예컨대, AMBA®, PCI EXPRESS®, HyperTransport®, Serial ATA)를 통해, 하나 이상의 I/O 디바이스(108)에 컴퓨팅 시스템(100)을 접속하도록 구성된 입출력(I/O) 디바이스 인터페이스(106)에 접속될 수 있다. I/O 디바이스(108)는 예컨대, 키보드 및 포인팅 디바이스를 포함할 수 있으며, 포인팅 디바이스는 그 중에서도 터치패드 또는 터치스크린을 포함할 수 있다. I/O 디바이스(108)는 컴퓨팅 시스템(100)의 빌트인 구성요소일 수 있거나 컴퓨팅 시스템(100)에 외부 접속된 디바이스일 수 있다.
프로세서(102)는 시스템 버스(104)를 통해, 디스플레이 디바이스(112)에 컴퓨팅 시스템(100)을 접속하도록 구성된 디스플레이 디바이스 인터페이스(110)에 또한 링크될 수 있다. 디스플레이 디바이스(112)는 컴퓨팅 시스템(100)의 빌트인 구성요소인 디스플레이 스크린을 포함할 수 있다. 디스플레이 디바이스(112)는 그 중에서도 컴퓨팅 시스템(100)에 외부 접속되는 컴퓨터 모니터, 텔레비전 또는 프로젝터를 또한 포함할 수 있다. 추가적으로, 프로세서(102)는 시스템 버스(104)를 통해 네트워크 인터페이스 카드(NIC)(114)에 또한 링크될 수 있다. NIC(114)는 시스템 버스(104)를 통해 네트워크(도시 생략)에 컴퓨팅 시스템(100)을 접속하도록 구성될 수 있다. 네트워크(도시 생략)는 그 중에서도 WAN, LAN 또는 인터넷일 수 있다.
프로세서(102)는 시스템 버스(104)를 통해 메모리 디바이스(116)에 또한 링크될 수 있다. 일부 실시예에서, 메모리 디바이스(116)는 랜덤 액세스 메모리(그 중에서도 예컨대, SRAM, DRAM, eDRAM, EDO RAM, DDR RAM, RRAM®, PRAM), 판독 전용 메모리(그 중에서도 예컨대, 마스크 ROM, EPROM, EEPROM), 비휘발성 메모리(PCM, STT_MRAM, ReRAM, 멤리스터(Memristor)) 또는 임의의 다른 적합한 메모리 시스템을 포함할 수 있다. 일부 예에서, 메모리 디바이스(116)는 각각 임의의 적합한 수의 데이터 값에 대응하는 임의의 적합한 수의 메모리 어드레스를 포함할 수 있다. 일부 실시예에서, 메모리 디바이스(116)와 연관된 메모리 어드레스는 로컬 메모리 어드레스 공간에 대응한다. 예컨대, 로컬 메모리 어드레스 공간은 메모리 디바이스(116) 내의 저장된 데이터에 대응하는 임의의 적합한 수의 명백한 메모리 어드레스를 포함할 수 있다.
일부 실시예에서, 메모리 디바이스(116)는 메모리 제어기(118)를 통해 프로세서(102)에 의해 액세스될 수 있다. 메모리 제어기(118)는 프로세서(102)로 하여금 메모리 디바이스(116)로부터 데이터를 판독하게 하고 메모리 디바이스(116)에 데이터를 기록하게 하는 로직을 포함할 수 있다.
프로세서는 시스템 버스(104)를 통해 데이터 변환 모듈(120)에 또한 링크될 수 있다. 일부 실시예에서, 데이터 변환 모듈(120)은 메모리 제어기(118)로 집적될 수 있다. 일부 실시예에서, 데이터 변환 모듈(120)은 제 2 메모리 제어기(125) 및 시스템 접속부(126)(그 중에서도 예컨대, 이더넷, PCI®, PCI EXPRESS®, HyperTransport®, Serial ATA, 메시지 전달 인터페이스)를 통해 제 2 컴퓨팅 디바이스(124) 내의 외부 메모리 디바이스(122)로부터 데이터에 대한 요청을 검출할 수 있다. 외부 메모리 디바이스(122)는 랜덤 액세스 메모리(그 중에서도 예컨대, SRAM, DRAM, eDRAM, EDO RAM, DDR RAM, RRAM®, PRAM), 판독 전용 메모리(그 중에서도 예컨대, 마스크 ROM, EPROM, EEPROM, PRAM), 비휘발성 메모리 또는 임의의 다른 적합한 메모리 시스템을 포함할 수 있다. 일부 실시예에서, 외부 메모리 디바이스(122)는 제 2 메모리 제어기(125)를 포함할 수 있다. 일부 실시예에서, 각각의 메모리 디바이스, 예컨대, 메모리 디바이스(116) 및 외부 메모리 디바이스(122)는 고유한 메모리 어드레스 공간을 사용하여 데이터를 저장할 수 있다. 예컨대, 외부 메모리 디바이스(122)는 외부 메모리 어드레스 공간 내의 메모리 어드레스와 저장된 데이터를 연관시킴으로써 저장된 데이터에 액세스할 수 있다. 유사하게, 메모리 디바이스(116)는 로컬 메모리 어드레스 공간 내의 메모리 어드레스와 저장된 데이터를 연관시킴으로써 저장된 데이터에 액세스할 수 있다.
일부 실시예에서, 제 2 컴퓨팅 디바이스(124)는 외부 메모리 디바이스(122)에 데이터를 저장할 수 있는 제 2 데이터 변환 모듈(128)을 또한 포함할 수 있다. 주기적으로, 제 2 데이터 변환 모듈(128)은 컴퓨팅 디바이스(100) 내의 데이터 변환 모듈(120)에 의해 요청되는 외부 메모리 디바이스(122)로부터 데이터를 불러올 수 있다. 제 2 데이터 변환 모듈(128)은 외부 메모리 디바이스(122)로부터 불러온 요청된 데이터를 컴퓨팅 시스템(100) 내의 데이터 변환 모듈(120)로 또한 전달할 수 있다. 일부 실시예에서, 데이터 변환 모듈(120)은 외부 메모리 어드레스 공간으로부터의 요청된 데이터와 연관된 메모리 어드레스를 로컬 메모리 어드레스 공간으로 변환할 수 있다. 그 다음에 데이터 변환 모듈(102)은 로컬 메모리 어드레스 공간과 연관된 메모리 어드레스를 사용하여 요청된 데이터를 임의의 요청하는 운영 시스템, 애플리케이션 또는 하드웨어 구성요소에 제공할 수 있다.
도 1의 블록도가 컴퓨팅 시스템(100)이 도 1에 도시된 모든 구성요소를 포함하는 것임을 나타내도록 의도되지 않음을 이해해야 한다. 오히려, 컴퓨팅 시스템(100)은 도 1에 도시되지 않은 구성요소(예컨대, 추가 메모리 디바이스, 비디오 카드, 추가 네트워크 인터페이스 등)를 더 적게 또는 추가적으로 포함할 수 있다. 또한, 데이터 변환 모듈(120)의 임의의 기능은 프로세서(102)와 같은 임의의 적합한 하드웨어 구성요소에 부분적으로 또는 완전히 구현될 수 있다. 예컨대, 기능은 프로세서(102) 내에, 메모리 디바이스(116) 내에, 메모리 제어기 내에 또는 주변 디바이스 상의 코프로세서 내에 구현된 로직의 ASIC으로 구현될 수 있다.
도 2는 로컬 메모리 디바이스와 외부 메모리 디바이스 간에 데이터를 공유하는 방법의 예를 도시하는 프로세스 흐름도이다. 방법(200)은 도 1의 컴퓨팅 시스템과 같은 임의의 적합한 컴퓨팅 디바이스로 구현될 수 있다.
블록(202)에서, 제 1 컴퓨팅 디바이스의 데이터 변환 모듈(120)은 로컬 메모리 디바이스가 외부 메모리 디바이스에 대한 데이터를 저장하도록 구성할 수 있다. 일부 실시예에서, 구성은 로컬 메모리 디바이스의 임의의 적합한 부분을 외부 메모리 디바이스에 대한 데이터를 저장하는 데 할당하는 것을 포함할 수 있다. 예컨대, 데이터 변환 모듈(120)은 외부 저장 디바이스에 대한 데이터를 저장하도록 로컬 메모리 디바이스의 일부를 할당하는 데 동적 메모리 할당 또는 정적 메모리 할당과 같은 임의의 적합한 할당 기술을 사용할 수 있다. 일부 예에서, 로컬 메모리 디바이스를 가진 컴퓨팅 디바이스 내의 프로세서는 원격 노드 또는 제 2 컴퓨팅 시스템에 할당된 메모리가 존재함을 검출할 수 없다. 일부 예에서, 데이터 변환 모듈(120)은 부트 프로세서와 같은 컴퓨팅 디바이스의 초기화 동안에 로컬 메모리 디바이스 내 메모리 공간의 할당을 관리할 수 있다. 일부 예에서, 데이터 변환 모듈(120)은 또한 로컬 메모리 디바이스 내 메모리 공간의 할당을 동적으로 관리할 수 있다. 예컨대, 데이터 변환 모듈(120)은 소프트웨어 애플리케이션의 종료에 응답하여 외부 데이터 저장을 위해 로컬 메모리 디바이스 내에 상이한 양의 메모리를 재할당할 수 있다.
블록(204)에서, 데이터 변환 모듈(120)은 외부 데이터 변환 모듈로부터 데이터에 대한 요청을 검출할 수 있다. 일부 실시예에서, 외부 데이터 변환 모듈로부터의 데이터에 대한 요청은 데이터 변환 모듈(120)을 통해 로컬 메모리 디바이스로 송신될 수 있다. 예컨대, 데이터 변환 모듈(120)은 그 중에서도 버스, 이더넷, 인피니밴드(infiniband) 또는 PCIe와 같은 임의의 적합한 시스템 상호접속부에 접속할 수 있다. 제 2 컴퓨팅 시스템 내의 외부 데이터 변환 모듈이 로컬 메모리 디바이스로부터 데이터를 불러올 때, 외부 데이터 변환 모듈은 시스템 상호접속부를 통해 제 1 컴퓨팅 디바이스의 데이터 변환 모듈(120)로 데이터에 대한 요청을 송신할 수 있다.
블록(206)에서, 데이터 변환 모듈(120)은 외부 메모리 어드레스 공간으로부터의 요청된 데이터에 대응하는 메모리 공간을 로컬 메모리 어드레스 공간으로 변환할 수 있다. 일부 실시예에서, 데이터 변환 모듈(120)은 로컬 메모리 어드레스 공간 내의 메모리 어드레스 리스트 및 외부 메모리 어드레스 공간 내의 대응하는 메모리 어드레스 리스트를 포함하는 구성 테이블을 유지할 수 있다. 구성 테이블은 데이터 변환 모듈(120)이 메모리 어드레스를 제 1 메모리 어드레스 공간에서 제 2 메모리 어드레스 공간으로 변환하게 할 수 있다. 일부 실시예에서, 구성 테이블은 각각의 컴퓨팅 시스템 내의 메모리 제어기에 저장된다. 구성 테이블은 다른 시나리오 중에서, 주기적으로, 예컨대, 컴퓨팅 시스템의 초기화 동안에 또는 애플리케이션의 종료 후에 업데이트될 수 있다. 구성 테이블은 도 3과 관련하여 이하에 보다 상세히 설명된다.
블록(208)에서, 데이터 변환 모듈(120)은 로컬 메모리 어드레스 공간으로부터 로컬 메모리 어드레스에 기초하여 요청된 데이터를 불러올 수 있다. 일부 실시예에서, 데이터 변환 모듈(120)은 구성 테이블로부터의 로컬 메모리 공간을 사용하여 외부 메모리 디바이스로부터 요청된 데이터를 불러올 수 있다. 블록(210)에서, 데이터 변환 모듈(120)은 제 2 컴퓨팅 시스템 내의 외부 데이터 변환 모듈로 불러온 데이터를 전달할 수 있다. 일부 실시예에서, 데이터 변환 모듈(120)은 그 중에서도 임의의 적합한 통신 프로토콜, 예컨대, TCP/IP, 또는 메시지 전달 인터페이스를 사용하여 외부 메모리 디바이스로 불러온 데이터를 송신할 수 있다. 도 2의 프로세서 흐름도는 특정 애플리케이션에 따라, 방법(200) 내에 임의의 수의 추가 단계를 포함할 수 있다.
도 3은 로컬 메모리 디바이스의 메모리 어드레스 공간과 외부 메모리 디바이스의 메모리 어드레스 공간 간에 변환하는 데 사용될 수 있는 구성 테이블의 예이다. 이상 논의된 바와 같이, 구성 테이블(300)은 그 중에서도 도 1의 컴퓨팅 시스템(100)과 같은 임의의 적합한 컴퓨팅 시스템 내의 데이터 변환 모듈(120)로 구현될 수 있다.
구성 테이블(300)은 임의의 적합한 수의 행(302 및 304) 및 열(306 및 308)을 포함할 수 있다. 일부 실시예에서, 열(302 및 304)은 동일한 데이터 값에 대응하는 개별 메모리 어드레스 공간 내에 메모리 어드레스 범위를 포함할 수 있다. 예컨대, 하나의 열(302 또는 304)은 로컬 메모리 어드레스 공간 또는 외부 메모리 어드레스 공간 내에 임의의 수의 메모리 어드레스 범위를 포함할 수 있다. 구성 테이블로부터 행(306 또는 308)은 데이터 값에 대응하는 각각의 메모리 어드레스 공간으로부터 메모리 어드레스 범위를 포함할 수 있다. 예컨대, 구성 테이블(300)은 임의의 수의 컴퓨팅 디바이스로부터의 데이터 블록에 대응하는 메모리 어드레스 범위를 포함할 수 있다.
일부 실시예에서, 구성 테이블(300)은 2 개의 열(302 및 304)을 포함할 수 있으며, 각각의 열(302 또는 304)은 컴퓨팅 디바이스에 대한 특정 메모리 어드레스 공간을 위한 메모리 어드레스 범위를 포함한다. 예컨대, 구성 테이블(300)의 행(306 또는 308)으로부터의 각각의 메모리 어드레스 범위는 동일한 데이터 블록에 대응한다. 예시적인 구성 테이블(300)에서, 메모리 어드레스 범위 0x0001:0064 310 및 0x012D:0190 312는 로컬 메모리 어드레스 공간에 대응하는 데이터 값에 대한 메모리 어드레스 범위일 수 있다. 메모리 어드레스 범위 0x01F5:0258 314는 외부 메모리 어드레스 공간 내의 데이터 값에 대응하는 메모리 어드레스 범위일 수 있다. 일부 예에서, 각각의 데이터 값은 하나의 로컬 메모리 어드레스 및 다수의 외부 메모리 어드레스에 대응할 수 있다.
도 4는 외부 메모리 디바이스로부터 데이터를 요청하는 예시적인 방법을 도시하는 프로세스 흐름도이다. 방법(400)은 도 1의 컴퓨팅 시스템(100)과 같은 임의의 적합한 컴퓨팅 시스템으로 구현될 수 있다.
블록(402)에서, 데이터 변환 모듈(120)은 할당 요청을 생성할 수 있다. 본 명세서에서 지칭되는 할당 요청은 제 2 컴퓨팅 시스템에 제 1 메모리 디바이스에 대한 메모리를 할당하라고 지시할 수 있다. 예컨대, 할당 요청은 제 2 컴퓨팅 디바이스 상에 저장될 수 있는 제 1 컴퓨팅 디바이스로부터 임의의 적합한 양의 데이터를 나타낼 수 있다. 일부 실시예에서, 제 2 컴퓨팅 디바이스는 임의의 적합한 기술을 사용하여 제 2 컴퓨팅 디바이스 내의 메모리 디바이스에 데이터를 할당할 수 있다.
블록(404)에서, 데이터 변환 모듈(120)은 데이터에 대한 요청을 검출할 수 있다. 일부 실시예에서, 데이터에 대한 요청은 그 중에서도 운영 시스템, 소프트웨어 애플리케이션 또는 하드웨어 구성요소에 의해 생성될 수 있다. 블록(406)에서, 데이터 변환 모듈(120)은 요청된 데이터가 로컬 메모리 디바이스 또는 외부 메모리 디바이스 내에 존재하는지를 판정할 수 있다. 예컨대, 데이터 변환 모듈(120)은 요청된 데이터가 로컬 메모리 디바이스 또는 외부 메모리 디바이스에 대응하는 메모리 어드레스를 가지는지를 검출할 수 있다. 일부 실시예에서, 데이터 변환 모듈(120)은 요청된 데이터에 대응하는 메모리 어드레스를 로컬 메모리 어드레스 공간에서 외부 메모리 어드레스 공간으로 변환할 수 있다. 요청된 데이터가 외부 메모리 디바이스에 존재하면, 프로세스 흐름은 블록(408)에서 계속된다. 요청된 데이터가 로컬 메모리 디바이스에 존재하면, 프로세스 흐름은 블록(410)에서 계속된다.
블록(408)에서, 데이터 변환 모듈(120)은 외부 메모리 디바이스를 포함하는 제 2 컴퓨팅 시스템으로 데이터에 대한 요청을 전달한다. 이상 논의된 바와 같이, 외부 메모리 디바이스는 제 2 컴퓨팅 디바이스에 로컬로 데이터를 저장하고 제 1 컴퓨팅 디바이스에 대해 외부적으로 데이터를 저장한다. 일부 실시예에서, 데이터에 대한 요청은 외부 메모리 어드레스 공간에 대응하는 임의의 적합한 수의 메모리 어드레스를 포함한다.
블록(412)에서, 데이터 변환 모듈(120)은 제 2 컴퓨팅 시스템 내의 외부 메모리 디바이스로부터 요청된 데이터를 수신한다. 일부 실시예에서, 데이터 변환 모듈(120)은 데이터에 대한 요청에 응답하여 임의의 적합한 수의 데이터 값을 수신한다. 일부 예에서, 수신된 데이터는 외부 메모리 어드레스 공간에 대응하는 메모리 어드레스를 가질 수 있다.
블록(414)에서, 데이터 변환 모듈(120)은 외부 메모리 어드레스를 로컬 메모리 어드레스로 변환할 수 있다. 예컨대, 데이터 변환 모듈(120)은 구성 테이블을 사용하여 외부 메모리 어드레스 공간으로부터의 메모리 어드레스를 로컬 메모리 어드레스 공간으로부터의 메모리 어드레스로 변환할 수 있다. 일부 예에서, 데이터 변환 모듈(120)은 메모리 어드레스를 외부 메모리 어드레스 공간에서 로컬 메모리 어드레스 공간으로 변환함으로써 블록(406)에서의 메모리 어드레스의 변환을 반전시킬 수 있다.
블록(416)에서, 데이터 변환 모듈(120)은 로컬 메모리 어드레스 공간으로부터 메모리 어드레스에 기초하여 요청된 데이터를 리턴할 수 있다. 데이터 변환 모듈(120)은 그 중에서도 운영 시스템, 애플리케이션 또는 하드웨어 구성요소와 같은 임의의 적합한 요청자로 요청된 데이터를 리턴할 수 있다. 프로세스 흐름은 블록(418)에서 종료된다.
블록(406)에서 요청된 데이터가 로컬 메모리 디바이스에 존재하면, 프로세스 흐름은 블록(410)에서 계속된다. 블록(410)에서, 데이터 변환 모듈(120)은 로컬 메모리 어드레스 공간을 사용하여 로컬 메모리 디바이스로부터 요청된 데이터를 불러올 수 있다. 프로세스 흐름은 블록(418)에서 종료된다.
도 4의 프로세스 흐름도는 방법(400)의 동작이 임의의 특정 순서로 실행되어야 하거나 방법(400)의 모든 동작이 모든 경우에 포함되어야 함을 나타내도록 의도되지 않는다. 또한, 특정 애플리케이션에 따라, 임의의 수의 추가 단계가 방법(400) 내에 포함될 수 있다.
도 5는 반사 메모리를 가진 컴퓨팅 디바이스 내에 일관성(coherency)을 구현할 수 있는 유형적인 비일시적 컴퓨터 판독가능 매체(500)를 도시하는 블록도이다. 유형적인 비일시적 컴퓨터 판독가능 매체(500)는 컴퓨터 버스(504)를 통해 프로세서(502)에 의해 액세스될 수 있다. 또한, 유형적인 비일시적 컴퓨터 판독가능 매체(500)는 프로세서(502)가 현재 방법의 단계들을 수행하도록 지시하는 컴퓨터 실행가능 인스트럭션을 포함할 수 있다.
본 명세서에 논의된 다양한 소프트웨어 구성요소는 도 5에 나타낸 바와 같이, 유형적인 비일시적 컴퓨터 판독가능 매체(500) 상에 저장될 수 있다. 예컨대, 데이터 변환 모듈(506)은 메모리 어드레스를 로컬 메모리 어드레스 공간에서 외부 메모리 어드레스 공간으로 변환하고, 외부 메모리 어드레스를 사용하여 외부 메모리 디바이스에 저장된 데이터를 요청할 수 있다. 도 5에 도시되지 않은 임의의 수의 추가 소프트웨어 구성요소가 특정 애플리케이션에 따라 유형적인 비일시적 컴퓨터 판독가능 매체(500) 내에 포함될 수 있음을 이해해야 한다.
본 예는 다양한 변경 및 대안 형태가 가능할 수 있고 예시적인 목적으로만 도시될 수 있다. 또한, 본 기술이 본 명세서에 개시된 특정 예로만 제한되도록 의도되지 않음을 이해해야 한다. 그뿐 아니라, 첨부된 특허청구범위의 범주는 개시된 청구 대상이 속하는 당업자에게 자명한 모든 대안, 변경 및 균등물을 포함하는 것으로 간주된다.

Claims (15)

  1. 제 1 컴퓨팅 디바이스 내의 로컬 메모리 디바이스에서 제 2 컴퓨팅 디바이스 내의 외부 메모리 디바이스로 데이터를 전달하는 방법에 있어서,
    상기 외부 메모리 디바이스에 대한 데이터를 저장하도록 상기 로컬 메모리 디바이스를 구성하는 단계와,
    상기 외부 메모리 디바이스로부터 데이터에 대한 요청을 검출하는 단계와,
    상기 요청된 데이터에 대응하는 메모리 어드레스를 외부 메모리 어드레스에서 로컬 메모리 어드레스로 변환하는 단계와,
    상기 로컬 메모리 어드레스에 기초하여 상기 요청된 데이터를 불러오는 단계와,
    상기 요청된 데이터를 상기 제 2 컴퓨팅 디바이스로 전달하는 단계를 포함하는
    데이터 전달 방법.
  2. 제 1 항에 있어서,
    상기 외부 메모리 디바이스에 대한 데이터를 저장하도록 상기 로컬 메모리 디바이스를 구성하는 단계는 상기 로컬 메모리 디바이스의 일부를 상기 외부 메모리 디바이스에 대한 데이터 저장을 위해 할당하는 단계를 포함하는
    데이터 전달 방법.
  3. 제 1 항에 있어서,
    상기 외부 메모리 디바이스로부터 데이터에 대한 요청을 검출하는 단계는 상기 요청된 데이터가 상기 로컬 메모리 디바이스 또는 상기 외부 메모리 디바이스에 존재하는지를 판정하도록 구성 테이블을 검색하는 단계를 포함하는
    데이터 전달 방법.
  4. 제 1 항에 있어서,
    상기 요청된 데이터는 상기 로컬 메모리 어드레스 공간 내의 메모리 어드레스 및 상기 외부 메모리 어드레스 공간 내의 개별 메모리 어드레스를 가지는
    데이터 전달 방법.
  5. 제 3 항에 있어서,
    상기 구성 테이블은 상기 외부 메모리 어드레스 공간으로부터의 메모리 어드레스 리스트 및 상기 로컬 메모리 어드레스 공간으로부터의 메모리 어드레스 리스트를 포함하는
    데이터 전달 방법.
  6. 제 5 항에 있어서,
    상기 구성 테이블은 적어도 2 개의 컴퓨팅 디바이스에 대응하는 적어도 2 개의 외부 메모리 어드레스 공간으로부터의 메모리 어드레스 리스트를 포함하는
    데이터 전달 방법.
  7. 제 1 항에 있어서,
    상기 외부 메모리 어드레스 공간은 이산 메모리 어드레스의 범위를 포함하고, 각각의 이산 메모리 어드레스는 컴퓨팅 디바이스에 저장된 데이터에 대응하는
    데이터 전달 방법.
  8. 외부 메모리 디바이스로부터 데이터를 불러오는 시스템으로서,
    메모리 어드레스를 외부 메모리 어드레스 공간에서 로컬 메모리 어드레스 공간으로 변환하는 데이터 변환 모듈과,
    데이터를 저장하는 로컬 메모리 디바이스와,
    프로세서를 포함하되,
    상기 프로세서는,
    상기 로컬 메모리 디바이스 내의 데이터에 대한 요청을 검출하고,
    상기 요청된 데이터가 상기 외부 메모리 디바이스에 존재한다고 결정하며,
    상기 데이터에 대한 요청을 상기 외부 메모리 디바이스로 전달하고,
    상기 외부 메모리 디바이스로부터 상기 요청된 데이터를 수신하며,
    상기 요청된 데이터에 대응하는 메모리 어드레스를 상기 외부 메모리 어드레스 공간에서 상기 로컬 메모리 어드레스 공간으로 변환하고,
    상기 변환된 메모리 어드레스를 가진 상기 요청된 데이터를 요청자로 리턴하는
    시스템.
  9. 제 8 항에 있어서,
    상기 요청자는 애플리케이션, 운영 시스템 및 하드웨어 구성요소 중 하나를 포함하는
    시스템.
  10. 제 8 항에 있어서,
    상기 데이터 변환 모듈은 구성 테이블을 포함하고, 상기 구성 테이블은 상기 외부 메모리 어드레스 공간으로부터의 메모리 어드레스 리스트 및 상기 로컬 메모리 어드레스 공간으로부터의 메모리 어드레스 리스트를 포함하는
    시스템.
  11. 제 10 항에 있어서,
    상기 구성 테이블은 적어도 2 개의 컴퓨팅 디바이스에 대응하는 적어도 2 개의 외부 메모리 어드레스 공간으로부터의 메모리 어드레스 리스트를 포함하는
    시스템.
  12. 복수의 인스트럭션을 포함하는 컴퓨터 판독가능 매체로서,
    상기 복수의 인스트럭션은 컴퓨팅 디바이스에서 실행되는 것에 응답하여 상기 컴퓨팅 디바이스로 하여금,
    로컬 메모리 디바이스 내의 데이터에 대한 요청을 검출하고,
    상기 요청된 데이터가 외부 메모리 디바이스에 존재한다고 결정하며,
    상기 데이터에 대한 요청을 상기 외부 메모리 디바이스로 전달하고,
    상기 외부 메모리 디바이스로부터 상기 요청된 데이터를 수신하며,
    상기 요청된 데이터에 대응하는 메모리 어드레스를 외부 메모리 어드레스 공간에서 로컬 메모리 어드레스 공간으로 변환하고,
    상기 변환된 메모리 어드레스를 가진 상기 요청된 데이터를 요청자로 리턴하게 하는
    컴퓨터 판독가능 매체.
  13. 제 12 항에 있어서,
    상기 요청자는 애플리케이션, 운영 시스템 및 하드웨어 구성요소 중 하나를 포함하는
    컴퓨터 판독가능 매체.
  14. 제 12 항에 있어서,
    컴퓨팅 디바이스에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금, 구성 테이블을 생성하게 하는 복수의 인스트럭션을 포함하되,
    상기 구성 테이블은 상기 외부 메모리 어드레스 공간으로부터의 메모리 어드레스 리스트 및 상기 로컬 메모리 어드레스 공간으로부터의 메모리 어드레스 리스트를 포함하는
    컴퓨터 판독가능 매체.
  15. 제 12 항에 있어서,
    상기 요청된 데이터는 상기 로컬 메모리 어드레스 공간 내의 메모리 어드레스 및 상기 외부 메모리 어드레스 공간 내의 개별 메모리 어드레스를 가지는
    컴퓨터 판독가능 매체.
KR1020157026674A 2013-03-28 2013-03-28 공유 메모리 시스템 KR20150136075A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/034491 WO2014158177A1 (en) 2013-03-28 2013-03-28 Shared memory system

Publications (1)

Publication Number Publication Date
KR20150136075A true KR20150136075A (ko) 2015-12-04

Family

ID=51624959

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157026674A KR20150136075A (ko) 2013-03-28 2013-03-28 공유 메모리 시스템

Country Status (7)

Country Link
US (1) US20160034392A1 (ko)
EP (1) EP2979193B1 (ko)
JP (1) JP2016522915A (ko)
KR (1) KR20150136075A (ko)
CN (1) CN105190576A (ko)
TW (1) TWI505183B (ko)
WO (1) WO2014158177A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2949081A4 (en) 2013-01-27 2016-10-05 Hewlett Packard Entpr Dev Lp CONNECTION INTERFACE STATE TRANSFER
JP6404347B2 (ja) * 2013-12-20 2018-10-10 インテル・コーポレーション 実行オフロード
US10671460B2 (en) * 2018-02-05 2020-06-02 Micron Technology, Inc. Memory access communications through message passing interface implemented in memory systems
CN109947671B (zh) * 2019-03-05 2021-12-03 龙芯中科技术股份有限公司 一种地址转换方法、装置、电子设备及储存介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6087946A (ja) * 1983-10-20 1985-05-17 Oooka Tankoushiyo:Kk 自動車のトランスミツシヨン用クラツチギヤの加工方法
US6295571B1 (en) * 1999-03-19 2001-09-25 Times N Systems, Inc. Shared memory apparatus and method for multiprocessor systems
EP1069512A3 (en) * 1999-07-12 2004-12-15 Matsushita Electric Industrial Co., Ltd. Data processing apparatus with buffering between buses
US7529906B2 (en) * 2003-08-18 2009-05-05 Cray Incorporated Sharing memory within an application using scalable hardware resources
EP1396790A3 (en) * 2002-09-04 2008-02-27 Cray Inc. Remote translation mechanism of a virtual address from a source a node in a multi-node system
US7685319B2 (en) * 2004-09-28 2010-03-23 Cray Canada Corporation Low latency communication via memory windows
US7970980B2 (en) * 2004-12-15 2011-06-28 International Business Machines Corporation Method and apparatus for accessing memory in a computer system architecture supporting heterogeneous configurations of memory structures
US8667249B2 (en) * 2004-12-22 2014-03-04 Intel Corporation Systems and methods exchanging data between processors through concurrent shared memory
US20080082622A1 (en) * 2006-09-29 2008-04-03 Broadcom Corporation Communication in a cluster system
US7636816B2 (en) * 2006-09-29 2009-12-22 Broadcom Corporation Global address space management
US7631150B2 (en) * 2006-09-29 2009-12-08 Broadcom Corporation Memory management in a shared memory system
US20090089537A1 (en) * 2007-09-28 2009-04-02 Sun Microsystems, Inc. Apparatus and method for memory address translation across multiple nodes
US7827336B2 (en) * 2008-11-10 2010-11-02 Freescale Semiconductor, Inc. Technique for interconnecting integrated circuits
US20100191814A1 (en) * 2008-12-23 2010-07-29 Marco Heddes System-On-A-Chip Employing A Network Of Nodes That Utilize Receive Side Flow Control Over Channels For Messages Communicated Therebetween
US7895380B2 (en) * 2009-01-21 2011-02-22 Ati Technologies Ulc Communication protocol for sharing memory resources between components of a device
US8719547B2 (en) * 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
KR101039782B1 (ko) * 2009-11-26 2011-06-09 한양대학교 산학협력단 능동 메모리 프로세서를 포함하는 네트워크-온-칩 시스템

Also Published As

Publication number Publication date
CN105190576A (zh) 2015-12-23
US20160034392A1 (en) 2016-02-04
TW201502972A (zh) 2015-01-16
EP2979193A4 (en) 2016-11-16
JP2016522915A (ja) 2016-08-04
EP2979193B1 (en) 2021-04-28
WO2014158177A1 (en) 2014-10-02
EP2979193A1 (en) 2016-02-03
TWI505183B (zh) 2015-10-21

Similar Documents

Publication Publication Date Title
US10545672B2 (en) Method for accessing extended memory, device, and system
US9760497B2 (en) Hierarchy memory management
JP5752989B2 (ja) プロセッサ・メインメモリのための持続性メモリ
JP7449063B2 (ja) メモリシステム及びメモリシステムの動作方法
KR20150136075A (ko) 공유 메모리 시스템
JP6674460B2 (ja) 不均一メモリアーキテクチャにおける改善されたレイテンシのためのシステムおよび方法
US11157191B2 (en) Intra-device notational data movement system
US20120191896A1 (en) Circuitry to select, at least in part, at least one memory
JP6676052B2 (ja) 不均一メモリアーキテクチャにおける改善されたレイテンシを可能にするためのシステムおよび方法
JP2019175427A (ja) コンピュータシステム及びその動作方法
US10691625B2 (en) Converged memory device and operation method thereof
US10936219B2 (en) Controller-based inter-device notational data movement system
US20210117114A1 (en) Memory system for flexibly allocating memory for multiple processors and operating method thereof
US10860498B2 (en) Data processing system
CN109661650A (zh) 分布式共享存储器系统中的对象一致性
US11016666B2 (en) Memory system and operating method thereof
JP2020113256A (ja) メモリシステム及びデータ処理システム
US11281612B2 (en) Switch-based inter-device notational data movement system
WO2017084415A1 (zh) 一种存储器切换方法、装置及计算机存储介质
EP4343560A1 (en) Interface for remote memory
US20230393970A1 (en) Global virtual address space across operating system domains
US20200142632A1 (en) Storage device including a memory controller and a method of operating an electronic system including memory
CN114925000A (zh) 地址转换方法、电子装置和电子设备
CN117171067A (zh) 跨操作系统域的全局虚拟地址空间
CN117743253A (zh) 用于远程存储器的接口

Legal Events

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