KR101754549B1 - 재구성 가능한 메모리 시스템들을 위한 가상화된 물리적 어드레스들 - Google Patents

재구성 가능한 메모리 시스템들을 위한 가상화된 물리적 어드레스들 Download PDF

Info

Publication number
KR101754549B1
KR101754549B1 KR1020167034625A KR20167034625A KR101754549B1 KR 101754549 B1 KR101754549 B1 KR 101754549B1 KR 1020167034625 A KR1020167034625 A KR 1020167034625A KR 20167034625 A KR20167034625 A KR 20167034625A KR 101754549 B1 KR101754549 B1 KR 101754549B1
Authority
KR
South Korea
Prior art keywords
memory
address
abstracted
protection zone
virtual
Prior art date
Application number
KR1020167034625A
Other languages
English (en)
Other versions
KR20160145848A (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 KR20160145848A publication Critical patent/KR20160145848A/ko
Application granted granted Critical
Publication of KR101754549B1 publication Critical patent/KR101754549B1/ko

Links

Images

Classifications

    • 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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/109Address translation 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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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/0626Reducing size or complexity of storage systems
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

시스템들 및 방법들은 추상화된 메모리 모듈에서 메모리 어드레스 요청들의 가상 대 물리 매핑을 가능하게 하는 추상화된 메모리 프로토콜을 이용하는 메모리 시스템을 정의한다. 메모리 추상화 유닛은 하나 이상의 메모리 디바이스에서의 타이밍 및 네이밍을 위한 하나 이상의 클라이언트로부터의 메모리 요청들의 타이밍 및 네이밍을 추상화한다. 메모리 추상화 유닛은 클라이언트들로부터의 메모리 요청들을 해석하기 위한 추상화된 메모리 프로토콜 로직을 포함한다. 메모리 추상화 유닛은 또한 요청 클라이언트에 의한 메모리 액세스 요청에 의해 정의된 상기 네이밍을 메모리 디바이스들 및 가상의 물리적 어드레스의 메모리 디바이스들에 액세스하기 위한 메모리 제어 로직 중 적어도 하나에서 선택된 보호 존의 가상의 물리적 어드레스로 변환하기 위한 매핑 로직을 포함한다.

Description

재구성 가능한 메모리 시스템들을 위한 가상화된 물리적 어드레스들{VIRTUALIZED PHYSICAL ADDRESSES FOR RECONFIGURABLE MEMORY SYSTEMS}
우선권 주장
본 출원은 "재구성 가능한 메모리 시스템들을 위한 가상화된 물리적 어드레스들"에 대해, 2014년 5월 9일에 출원된, 미국 특허 가 출원 번호 14/274,195호의 출원일에 대한 혜택을 주장한다.
기술분야
본 발명은 일반적으로 가상 메모리 매핑에 관한 것이다. 보다 상세하게는, 본 발명은 메모리 추상화 프로토콜들을 이용하는 재구성 가능한 메모리 시스템들에서의 가상 메모리 매핑에 관한 것이다.
메모리 디바이스들은 통상적으로 컴퓨터들 또는 다른 전자 디바이스들 내의 반도체 집적 회로들 및/또는 외부 착탈가능한 디바이스들로서 많은 데이터 프로세싱 시스템들에 제공된다. 그 중에서도, 많은 상이한 유형의 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기식 DRAM(SRDAM), 플래시 메모리, 및 저항 가변 메모리의 을 포함하여 메모리가 있다.
종래 메모리 시스템들은 통상적으로 하나 이상의 메모리 디바이스, 이를테면 듀얼 인라인 메모리 모듈(DIMM; Dual In-line Memory Module)라는 이름의 인쇄 회로 기판(PCB) 상에 장착되는, DRAM으로 구성된다. 메모리 시스템은 메모리 제어 서브시스템 또는 중앙 처리 장치(CPU) 또는 마이크로프로세서와 통신한다. 몇몇 구성에서, 메모리 제어기는 프로세서와 동일한 물리적 칩으로 물리적으로 포함된다. 다른 구성들에서, 메모리 제어기는 메모리 제어기 허브(MCH; Memory Controller Hub)를 포함하는 많은 논리적 구성요소 중 단지 하나일 수 있다. 메모리 제어기 허브는 통상적으로, 보통 상이한 유형들의 반도체 메모리 또는 상이한 용도들을 이용하는, 완전히 개별 및 별개의 메모리 어드레스 공간들을 지원한다. 예를 들어, 메모리 제어기는 그래픽 애플리케이션들을 위한 비디오 DRAM, 디스크 드라이브 가속을 위한 플래시 메모리, 및 프로세서의 주 외부 메모리로서의 상품 DRAM의 이용을 지원할 수 있다.
많은 컴퓨터 시스템은 특정한 프로세서들, 특정한 프로세스들, 및 이들의 조합들에 할당되는 가상 메모리를 생성하도록 구성된다. 기계 가상화(예를 들어, "하이퍼바이저들(hypervisors)")를 제공하기 위한 현재 소프트웨어-기반 메커니즘들은 상이한 운영 체제들 중에 기계 자원들을 분배하는 것에 대한 상대적으로 불안정한 메커니즘을 제공한다. 몇몇 하이퍼바이저, 특히 IBM 메인프레임들 내의 것들은 이들 메커니즘 중 몇몇에 하드웨어 실시를 제공한다. 심지어 x86 아키텍처는 지시들의 특권을 설명하기 위한 CPU 링들을 포함한다. VMWARE와 같은 몇몇 소프트웨어 하이퍼바이저는 이들 링 위에 구축될 수 있다. 몇몇 기계는 운영 체제의 다수의 인스턴스가 동일한 하드웨어 플랫폼 상에서 실행하는 것을 허용하고 도메인들 간 간섭으로부터의 하드웨어 보호를 제공하기 위해 단일 대규모 대칭형 다중 프로세서(SMP; Symmetric Multiprocessor) 또는 대규모 분산 시스템들 내에 하드웨어 "도메인들"을 제공할 수 있다. 그러나, 시스템들의 이들 유형은 단지 보드 레벨의 자원들의 도메인-레벨 할당을 가능하게 했다. 하드웨어-레벨의 재 구성은 통상적으로 상위-단계(coarse-grain)(예를 들어, 함께 할당될 프로세서 및 메모리 자원들 양자를 필요로 하는)이다. 소프트웨어-레벨의 재구성은 통상적으로 하위-단계(fine-grain)이나, 저조하게 시행된다.
현재 프로세서, 메모리, 및 저장 자원들은 물리적 유닛들(통상적으로 "슬레드들(sleds)")에 할당되고 데이터센터-규모 네트워크들을 통해 상호 접속되는, 데이터센터들 내 "상세화(disaggregation)"로 가는 산업 추세가 존재한다. 이들 자원은 통상적인 네트워크 프로토콜, 보통 TCP/IP을 통한 스루풋, 지연, 및 자원들의 면에서 높은 비용으로 액세스된다. 이들 유형의 상세화된 시스템들은 (상세화 이전 경우와 마찬가지로, 다른 CPU 및 운영 체제(OS) 인스턴스의 추가에 요구되는 새로운 메모리 제어기 또는 디스크 제어기를 부가하여) 메모리 자원들이 프로세서 자원들과 할당되지 않다도 된다는 점에서 자원들의 다소 개선된 균형화를 가능하게 하며, 이는 여전히 높은 오버헤드를 초래한다. 네트워크 프로세싱 하나만으로도 상당한 펌웨어 및 내장된 제어를 필요로 하고; 복합 프로토콜들이 지연 오버헤드 및 대역폭 제한들을 지우는 등이다. 통상적으로, 네 자릿수의 성능 또는 그 이상이 이들 구성에서 손실될 수 있다. 덧붙여, 이들 상세화된 시스템은 상위-단계 컴퓨터 구성들을 나타낸다.
도 1은 추상화된 메모리 프로토콜을 이용하는 시스템의 예로서 하이브리드 메모리 큐브를 포함하는 데이터 프로세싱 시스템의 도해이다.
도 2는 하이브리드 메모리 큐브 내 DRAM들의 가능한 분할을 예시한다.
도 3은 하이브리드 메모리 큐브 내 DRAM들의 분할의 일례의 논리적 뷰를 예시한다.
도 4는 링크 인터페이스들을 위한 그리고 하이브리드 메모리 큐브 내 DRAM들을 제어하는 로직 베이스를 예시한다.
도 5는 하이브리드 메모리 큐브들의 연쇄를 예시한다.
도 6은 본 발명의 실시예들에 따른 추상화된 메모리 프로토콜들 및 추상화된 메모리에서의 가상 메모리 할당을 이용하는 시스템을 예시한다.
도 7은 본 개시의 실시예들에 따른 메모리 추상화 모듈의 블록도를 예시한다.
도 8은 인접하게 할당되는 물리적 어드레스 공간 및 가상 어드레스 공간들을 도시하는 메모리 도해를 예시한다.
도 9는 인접하지 않게 할당될 수 있는 물리적 어드레스 공간 및 가상 어드레스 공간들을 도시하는 메모리 도해를 예시한다.
도 10은 추상화된 메모리 프로토콜을 이용하여 가상 어드레스 공간에 액세스하는 프로세스를 예시한다.
이하의 상세한 설명에서, 여기의 일부를 형성하고, 본 발명이 실시될 수 있는 특정한 예시적인 실시예들이 예로서 도시된, 첨부 도면들이 참조된다. 이들 실시예는 당해 기술분야의 통상의 기술자가 본 발명을 실시할 수 있게 하기 위해 충분히 상세하게 설명된다. 그러나, 다른 실시예들이 이용될 수 있고, 구조, 물질, 및 프로세스 변경들이 본 개시의 범위를 벗어나지 않고 이루어질 수 있다. 여기에 제공된 예시들은 임의의 특정한 방법, 시스템, 디바이스, 또는 구조의 실제 뷰들로 의도되지 않고, 본 발명의 실시예들을 설명하기 위해 채용되는 단지 이상화된 표현들이다. 여기에 제공된 도면들은 반드시 일정한 축척으로 그려진 것은 아니다. 다양한 도면들에서의 유사한 구조들 또는 구성요소들은 독자의 편의를 위해 동일한 또는 유사한 넘버링을 보유할 수 있으나; 넘버링의 유사성은 구조들 또는 구성요소들이 크기, 구도, 구성, 또는 임의의 다른 속성이 반드시 동일하다는 것을 의미하지는 않는다.
요소들, 회로들, 모듈들, 및 기능들은 본 개시를 필요 이상으로 상세하여 모호하게 하지 않기 위해 블록도 형태로 도시될 수 있다. 게다가, 도시되고 설명된 특정한 구현예들은 단지 대표적이고 여기에 다르게 명시되지 않는 한 본 발명을 구현하기 위한 단지 하나의 방법으로 간주되지 않아야 한다. 추가로, 블록 정의들 및 다양한 블록들 간 로직의 분할은 특정한 구현예의 대표적인 것이다. 당해 기술분야의 통상의 기술자에게 본 개시가 많은 다른 분할 솔루션에 의해 실시될 수 있다는 것이 분명할 것이다. 대부분, 타이밍 고려사항들 및 기타에 관한 세부사항들은 그러한 세부사항들이 본 개시의 완전한 이해를 얻는데 필요하지 않고 관련 기술분야에서의 통상의 기술자들의 능력들 내에 있는 경우 생략되었다.
통상의 기술자들은 여기에 개시된 실시예들과 관련되어 설명된 다양한 예시적인 논리적 블록, 모듈, 회로, 및 알고리즘 동작이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로서 구현될 수 있다는 것을 인식할 것이다. 하드웨어 및 소프트웨어의 이러한 호환성을 분명히 예시하기 위해, 다양한 예시적인 구성요소, 블록, 모듈, 회로, 및 동작은 이들의 기능면에서 일반적으로 설명된다. 그러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지는 특정한 애플리케이션 및 전체 시스템 상에 부과되는 설계 제약들에 의존적이다. 통상의 기술자들은 각 특정한 애플리케이션에 따라 달라지는 방식으로 설명된 기능을 구현할 수 있으나, 그러한 구현 결정들은 여기에 설명된 실시예들의 범위에서 벗어남을 야기하는 것으로서 해석되지 않아야 한다.
하드웨어로 구현될 때, 여기에 개시된 실시예들은 여기에 설명된 기능들을 수행하도록 설계된 범용 프로세서, 전용 프로세서, 디지털 신호 프로세서(DSP), 프로세서 인 메모리(PIM), 애플리케이션 특정 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA) 또는 다른 프로그램 가능 로직 디바이스, 별개의 게이트 또는 트랜지스터 로직, 별개의 하드웨어 구성요소들, 또는 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있으나, 대안예에서, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 기계일 수 있다. 여기에 설명된 실시예들을 위한 프로세스들을 수행하기 위한 소프트웨어를 실행할 때, 범용 프로세서는 그러한 프로세스들을 수행하기 위해 구성된 전용 프로세서인 것으로 고려되어야 한다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 관련된 하나 이상의 마이크로프로세서, 또는 임의의 다른 그러한 구성으로 구현될 수 있다.
덧붙여, 실시예들은 플로우차트, 플로우 다이어그램, 구조 다이어그램, 또는 블록 다이어그램으로서 도시되는 프로세스의 면에서 설명될 수 있다는 것이 주의된다. 플로우차트가 순차적 프로세스들로서의 동작들을 설명할 수 있지만, 이들 동작의 많은 동작은 다른 순서로, 병렬적으로, 또는 실질적으로 동시에 수행될 수 있다. 덧붙여, 동작들의 순서는 재배열될 수 있다. 프로세스는 방법, 기능, 절차, 서브루틴, 서브프로그램 등에 대응할 수 있다. 뿐만 아니라, 여기에 개시된 방법들은 하드웨어, 소프트웨어, 또는 양자로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 컴퓨터 판독 가능한 매체 상에 하나 이상의 지시 또는 코드로 저장되거나 전송될 수 있다. 컴퓨터 판독 가능한 매체는 하나의 장소에서 다른 장소로 컴퓨터 프로그램의 이동을 가능하게 하는 임의의 매체를 포함하여 컴퓨터 저장 매체 및 통신 매체 양자를 포함한다.
당해 기술분야에서의 통상의 기술자들은 정보 및 신호들이 다양한 상이한 기술 중 임의의 기술을 사용하여 표현될 수 있다는 것을 이해할 것이다. 예를 들어, 본 설명 전체에 걸쳐 언급될 수 있는 데이터, 지시들, 명령들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기파들, 자기 장들 또는 입자들, 광학 필드들 또는 입자들, 또는 이들의 임의의 조합에 의해 표현될 수 있다. 몇몇 도면은 신호들을 제시 및 설명의 명확성을 위해 단일 신호로서 예시할 수 있다. 당해 기술분야에서의 통상의 기술자에 의해 신호는 신호들을 전달하기 위한 버스를 나타낼 수 있되, 버스는 다양한 비트 폭을 가질 수 있음이 이해될 것이다.
여기에서 이를테면 "제1," "제2," 및 기타를 사용하는 요소에 대한 임의의 언급은 그러한 제한이 명시적으로 언급되지 않는 한, 이들 요소의 수량 또는 순서를 제한하지 않는 것으로 이해되어야 한다. 오히려, 이들 지정은 여기에서 두 개 이상의 요소 또는 요소의 인스턴스들을 구별하는 편리한 방법으로 사용될 수 있다. 따라서, 제1 및 제2 요소들에 대한 언급은 단지 두 개의 요소가 거기서 채용될 수 있다거나 제1 요소는 반드시 몇몇 방식으로 제2 요소에 선행해야 한다는 것을 의미하지 않는다. 덧붙여, 다르게 서술되지 않는 한, 요소들의 세트는 하나 이상의 요소를 포함할 수 있다.
여기에 설명되는 요소들은 동일한 요소의 다수의 인스턴스를 포함할 수 있다. 이들 요소는 총칭적으로 수치 지정자(예를 들어, 110)에 의해 표시되며, 구체적으로 알파벳 지정자가 뒤따르는 수치 지정자(예를 들어, 110A) 또는 "대쉬"를 앞세우는 수치 지정자(예를 들어, 110-1)에 의해 표시될 수 있다. 이하의 설명의 용이함을 위해, 대부분 요소 번호 지정자들은 요소들이 도입되거나 가장 잘 논의되는 도면의 번호로 시작된다. 따라서, 예를 들어, 도 1 상에서의 요소 식별자들은 주로 수치 형식 1xx일 것이며, 도 4 상에서의 요소들은 주로 수치 형식 4xx일 것이다.
여기에 사용될 때, 주어진 파라미터, 속성, 또는 조건과 관련하여 용어 "실질적으로"는 당해 기술분야에서의 통상의 기술자가 이를테면 허용 가능한 제조 공차들 내, 작은 정도의 변형이 충족되는 것으로 이해하는 정도를 의미하고 포함한다. 예로서, 실질적으로 충족되는 특정한 파라미터, 속성, 또는 조건에 따라, 파라미터, 속성, 또는 조건은 적어도 90% 충족, 적어도 95% 충족, 또는 심지어 적어도 99% 충족될 수 있다.
여기에 사용될 때, 임의의 관계적 용어, 이를테면 "~ 위," "~아래," "~상," "~밑," "상측," "하측" 등은 본 개시 및 첨부 도면들을 이해하는데 있어서 명확성 및 편의성을 위해 사용되고 문맥이 분명히 다르게 표시하는 경우를 제외하고는, 임의의 특정한 우선, 배향, 또는 순서를 암시하거나 이에 의존적이지 않다.
요소가 다른 요소 "상에 있는," "에 연결되는," 또는 "에 결합되는" 것으로 언급될 때, 그것은 직접적으로 다른 요소 또는 개재되는 요소들 상에 있거나, 연결되거나, 또는 결합될 수 있는 것으로 이해될 것이다. 그에 반해, 요소가 다른 요소 "상에 직접적으로," "에 직접적으로 연결되는," 또는 "에 직접적으로 결합되는" 것으로 언급될 때에는, 어떠한 개재하는 요소들 또는 층들도 존재하지 않는 것이다. 여기에 사용될 때, 용어 "및/또는"은 다수의 나열된 관련 항목의 임의의 그리고 모든 조합을 포함한다.
본 개시는 추상화된 메모리 프로토콜들을 이용하여 재구성 가능한 메모리 시스템들 내에 가상화된 물리적 어드레스들을 제공함으로써 메모리 서브시스템들을 개선하기 위한 방법들 및 장치를 설명한다.
용어들 "추상화된 메모리 프로토콜," "추상화된 메모리," 및 메모리 추상화"는 여기에 사용될 때 물리적 메모리 디바이스에 대한 클라이언트 측 요청 및 실제 액세스 간 타이밍 및 네이밍의 분리를 의미한다. 메모리 판독에 대한 타이밍 추상화의 비 제한적 예로서, 클라이언트는 특정한 어드레스에 대한 패킷화된 메모리 요청을 발행할 수 있다. 정확히 규정할 수 없는, 얼마 후에, 메모리 시스템은 패킷화된 메모리 응답으로 요청된 데이터를 공급한다. 메모리가 DRAM인 경우, DRAM의 타이밍은 특정한 로우 어드레스 스트로브들, 컬럼 어드레스 스트로브들, 및 원하는 데이터를 얻기 위한 판독 응답 시간을 포함할 것이다. 따라서, DRAM의 타이밍은 클라이언트의 요청의 타이밍으로부터 추상화된다.
용어 "네이밍(naming)"은 여기에 사용될 때 메모리의 하나 이상의 특정 위치를 어드레싱하기 위한 프로세스 또는 데이터 구조들을 의미한다. 따라서, 클라이언트에 의해 생성된 네이밍은 프로세서에 의해 보여지는 바와 같이 특정 메모리 위치를 나타내도록 조합시키는 다수의 데이터 구조를 포함할 수 있다. 비 제한적 예로서, 클라이언트는 특정 디바이스를 선택하기 위한 디바이스 ID 번호 및 해당 디바이스 내 어드레스를 갖게 특정 위치를 어드레싱할 수 있다. 다른 비 제한적 예로서, 클라이언트는 존 ID 및 해당 존 내 어드레스를 갖게 특정 위치를 어드레싱할 수 있다. 존 ID들 및 디바이스 ID들에 관한 추가 세부사항들이 아래에서 논의된다. 물리적 메모리 디바이스 지점들의 네이밍은 해당 메모리 디바이스 상의 데이터의 하나 이상의 특정 위치를 나타낸다. 비 제한적 예로서, DRAM 디바이스 상의 네이밍은 특정 위치를 어드레싱하도록 조합시키는 로우 어드레스 및 컬럼 어드레스를 포함할 수 있다. 따라서, 하나의 특정한 비 제한적 예로서, 네이밍 추상화는 클라이언트에 의해 공급되는 디바이스 ID 및 어드레스 및 특정 메모리 디바이스의 로우 어드레스 및 컬럼 어드레스 간 변환(즉, 분리)을 포함할 수 있다.
네이밍 및 타이밍 추상화들을 이용하여, 본 개시의 실시예들이 DRAM 외에 다양한 메모리 및 저장 디바이스와 사용될 수 있다. 비 제한적 예들로서, RAM 디바이스들, 플래시 메모리, 및 저장 디바이스들(예를 들어, 디스크 드라이브들)이 또한 사용될 수 있다.
본 개시의 실시예들은 추상화된 메모리 디바이스 내 "보호 존들(protection zones)"을 정의하고, 보호 존들을 지원하도록 추상화된 메모리 프로토콜을 확장한다. 따라서, 추상화된 메모리 디바이스들 내 보호 존들을 갖는 메모리 시스템들은 클라이언트들(예를 들어, CPU들)이 추상화된 프로토콜을 통해 주어진 메모리 모듈(예를 들어, 하이브리드 메모리 큐브, 프로세서 인 메모리(PIM) 메모리 등) 상의 물리적 메모리의 세그먼트들을 할당 또는 할당 해제하게 한다. 게다가, 보호 존들은 추상화된 메모리 디바이스가 메모리 디바이스에서의 가상의 물리적 어드레스를 생성하게 한다. 다시 말해서, 클라이언트로부터 제공되는 어드레스는 보호 존에 의해 정의되는 바와 같이 추상화된 메모리 디바이스에서의 특정 물리적 어드레스로 변환될 수 있다. 메모리 모듈에 정의되는 이들 보호 존은 소프트웨어 레벨 가상화보다는 메모리 공간의 하드웨어 레벨 가상화를 제공한다. 덧붙여, 어드레스 변환은 어드레스 변환들이 클라이언트에서 또는 메모리 제어 허브에서 보다는 메모리 모듈 레벨에서 수행되기 때문에 메모리 시스템 전체에 걸쳐 분산될 수 있다.
본 개시에 따른 메모리 시스템들은 임의의 적합한 추상화된 메모리 프로토콜을 이용하여 구성될 수 있다. 구체사항들을 제공하기 위해, 추상화된 메모리 프로토콜의 일례가 상세하기 정의된다. 본 상세한 설명은 보호 존들 전체에 걸쳐 정의되는 가상의 물리적 어드레스를 지원할 수 있는 추상화된 메모리 프로토콜의 비 제한적 예로서 하이브리드 메모리 큐브(HMC) 프로토콜에 집중한다. 그 다음, 보다 일반적인 시스템이 다른 추상화된 메모리 프로토콜들 및 가상의 물리적 어드레스들이 그러한 일반적인 시스템들에서 어떻게 정의될 수 있는지를 나타내도록 설명된다.
도 1은 클라이언트(110)와 통신하기 위해 추상화된 메모리 프로토콜(130)을 이용하는 메모리 버스 상에서 동작하기 위한 디바이스의 예로서 하이브리드 메모리 큐브 디바이스(200)를 포함하는 데이터 프로세싱 시스템(100)의 도해이다. 설명의 용이함을 위해, 본 개시는 HMC 프로토콜 버스들에 초점을 맞춘다. 그러나, 본 개시의 혜택을 갖는 당해 기술분야에서의 통상의 기술자들은 본 개시의 실시예들이 데이터 버스 상의 프로토콜 및 데이터를 유지하는 디바이스들 간 추상화를 포함하는 다른 고속 데이터 버스들로 실시될 수 있다는 것을 인식할 것이다.
용어 "클라이언트"(110)는 여기에서 DRAM 메모리와 같은, 데이터를 저장하기 위한 디바이스들보다는, 주로 데이터의 소비자들 및 생성자들로서 구성되는 메모리 버스 상의 디바이스들을 식별하기 위해 사용된다. 비 제한적 예들로서, 클라이언트들(110)은 프로세서들(또한 여기에서 프로세싱 디바이스들로서 언급되는), 이를테면, 예를 들어, 범용 프로세서들, 전용 프로세서들, 그래픽스 프로세서들, 프로세서 인 메모리, 및 디지털 신호 프로세서들인 것으로 고려될 수 있다. 덧붙여, 클라이언트(110)는 프로세서, 이를테면, 예를 들어, 특정한 운영 체제상에서 실행하는 프로세스인 것으로 고려될 수 있다. 다른 비 제한적 예들로서, 클라이언트들(110)은 통신 디바이스들인 것으로 고려될 수 있다. 예를 들어, 통신 유형 클라이언트(110)는 메모리 버스 및 몇몇 다른 유형의 통신 버스, 이를테면, 예를 들어, 입력/출력(I/O) 버스 또는 네트워크 버스 사이에서 데이터를 전달하도록 구성될 수 있다. 물론, 클라이언트들(110)은 또한 프로세서 요소들 및 통신 요소들 양자를 포함할 수도 있다. 이와 같이, 여기에서의 설명은 또한 클라이언트(110)를 시스템 온 칩(SoC)(110)으로 설명할 수도 있다. 명확히 다르게 서술되지 않는 한, 여기에서 언급되는 바와 같은 SoC(110)는 클라이언트(110)와 균등한 것으로 고려되어야 한다. 마지막으로, 클라이언트들(110)은 데이터를 프로세싱하거나 이동시키는 것에 초점이 맞춰져 고려될 수 있지만, 그것들은 또한 클라이언트(110) 상에서 레지스터들, 버퍼들, 캐시들, 및 다른 유형들의 로컬 메모리의 형태로 상당한 양의 메모리를 포함할 수도 있다.
하이브리드 메모리 큐브 디바이스(200)(HMC(200))는 로직 베이스(400)를 포함하며, 이는 클라이언트(110) 및 HMC(200) 사이에 메모리 링크들(120)을 생성하기 위해 추상화된 메모리 프로토콜(130)을 정의한다. 병렬적 버스들(410)의 그룹은 HMC(200) 상의 로직 베이스(400) 및 DRAM들(250)의 그룹 사이를 인터페이싱한다. HMC(200)의 추가 세부사항들은 도 2 내지 도 4와 관련하여 아래에서 설명된다.
메모리 링크들(120)은 클라이언트(110) 쪽으로 향하는 업스트림 링크들 및 클라이언트(110)에서 떠나 향하는 다운스트림 링크들로 분할된다. 추상화된 메모리 프로토콜(130)의 부분으로서, 메모리 링크들(120)이 아래에서 보다 완전히 설명되는 바와 같이 패킷화된다. 그 결과, 메모리 링크들(120)은 또한 여기에서 하이브리드 메모리 큐브 링크들(120) 뿐만 아니라 패킷화된 메모리 링크들(120)로서도 언급된다. 게다가, 메모리 링크들(120) 상에 전달되는 패킷들은 패킷 요청들 및 패킷화된 요청들로서 언급될 수 있다.
도 2는 HMC(200) 내 DRAM들(250)의 가능한 분할을 예시한다. HMC(200)는 로직 베이스(400)에 결합되는 DRAM 다이(250)의 3-차원 스택으로 고려될 수 있다. 로직 베이스(400)는 별개의 다이로서 구성되고 DRAM 다이(250)와 인터페이싱하도록 구성될 수 있다. 적층될 때, 다양한 다이 간 상호 접속은 실리콘 관통 비아들을 통해 실현될 수 있다. 이들 디바이스는 물리적으로 3-차원 스택으로서 구성될 수 있지만, 그것들은 그렇게 구성될 필요는 없으나, 여전히 상호 접속 관점에서 3-차원인 것으로 생각될 수 있다.
도 3은 HMC(200) 내 DRAM들(250)의 분할의 일례의 논리적 뷰를 예시한다. 도 2 및 도 3을 참조하면, 다수의 다이 계층의 상호 접속은 메모리 디바이스가 메모리 저장 계층들 및 하나 이상의 로직 계층의 조합을 갖게 한다. 이러한 방식으로, 디바이스는 HMC(200)로서 구성되는 단일 다이 패키지에서의 물리적 메모리 저장 및 논리적 메모리 트랜잭션 프로세싱을 제공한다. 최종 결과는 디바이스당 320 GB/s까지의 이용 가능한 대역폭 용량을 갖는 매우 소형의, 전력 효율적인 패키지이다.
HMC(200)는 설계에 대한 계층적 및 병렬적 접근법을 통해 그러한 대역폭이 가능하다. 예를 들어, 디바이스 계층이 로직 계층들에 걸쳐 수직적으로 존재할 수 있고 하드웨어 병렬이 소정의 다이 계층에 걸쳐 존재할 수 있다. 로직 베이스(400)는 내부 라우팅 및 트랜잭션 로직 뿐만 아니라 HMC(200)에 대한 외부 링크 액세스 양자를 제공하는 다수의 구성요소를 포함한다.
HMC(200)는 보통 "보울트들(vaults)"로서 언급되는 수직 조각들(220)로 세그먼트화될 수 있다. 각 보울트는 보울트와 연관된 DRAM들(250)의 세그먼트들을 제어하기 위한 로직 베이스(400)로 통합되는 보울트 로직(450)을 포함할 수 있다. 보울트 로직(450)은 이의 보울트 내 메모리 분할들에 대한 메모리 참조 동작들을 관리한다. 각 보울트 제어기(450)는 이 자체의 타이밍 요건 및 복원 동작들을 결정할 수 있으며, 이는 각 보울트에 대해 상이한 타이밍을 허용하고 또한 호스트 메모리 제어기에서의 이들 기능에 대한 필요를 제거한다. 덧붙여, 큐가 해당 보울트의 메모리에 대한 참조들을 버퍼링하기 위해 각 보울트 제어기(450)에 포함될 수 있다. 보울트 제어기들(450)은 도착순보다는 요구에 기초하여 이들의 큐 내 참조들을 실행할 수 있다. 따라서, 보울트 동작들로부터 다시 외부 메모리 링크들(120)(도 1)로의 응답들은 몇몇 경우 순서가 뒤바뀔 수 있다.
메모리 링크들(120)은 4 또는 8 메모리 링크를 제공하도록 구성될 수 있다. 각 메모리 링크(120)는 16 또는 8 직렬 및 양방향 I/O 링크의 그룹으로서 구성될 수 있다. 4개의 링크로 구성된 디바이스들은 10, 12.5 및 15 Gbps로 동작할 수 있는 능력을 갖는다. 8개의 링크로 구성된 디바이스들은 10 Gbps로 동작할 수 있는 능력을 갖는다.
물리적 메모리 저장의 계층적 특성을 고려하면, HMC 디바이스 사양은 전통적인 뱅크드 DRAM 디바이스들과 상이한 물리적 어드레싱 및 인터리브 모델을 정의한다. HMC 디바이스들(200)에 대한 물리적 어드레스들은 보울트, 뱅크, 및 어드레스 비트들을 포함하는 34-비트 필드로 인코딩된다. 현재 사양은 필드의 하측 32-비트를 이용하기 위해 4개의 링크 디바이스 및 필드의 하측 33-비트를 이용하기 위해 8개의 링크 디바이스를 정의한다. 단일 어드레싱 구조에 의존적이기보다는, 사양은 구현자 및 사용자가 타겟 메모리 액세스 특성들에 대해 가장 최적화되는 어드레스 매핑 기법을 정의하도록 허용한다. 그것은 또한 물리적 보울트 및 뱅크 구조를 원하는 최대 블록 요청 크기로 연결하는 일련의 디폴트 어드레스 맵 모드를 제공한다. 디폴트 맵 기법들은 바로 뒤에 뱅크 어드레스 비트들이 따르는, 보다 덜 중요한 어드레스 비트들을 보울트 어드레스에 매핑함으로써 저 인터리브 모델을 구현한다. 이 방법은 뱅크 충돌들을 회피하기 위해 순차적 어드레스들이 먼저 보울트들에 걸쳐 그 다음 보울트들 내 뱅크들에 걸쳐 인터리빙하게 한다.
호스트 디바이스들 및 HMC 디바이스들(200) 간 모든 대역내 통신은 패킷화된 포맷을 통해 수행된다. 이러한 포맷은 세 개의 주요 패킷 분류들: 요청 패킷들, 응답 패킷들, 및 흐름 제어 패킷들을 포함한다. 패킷들은 단일 16-바이트 흐름 단위(flow unit)(또한 FLIT으로서도 언급되는)의 배수들로서 구성될 수 있다. 패킷 크기들은 9 FLIT(즉, 144 바이트)만큼 클 수 있다. 가장 작은 패킷은 패킷 헤더 및 패킷 테일을 포함하여 단지 하나의 16-바이트 FLIT을 포함할 수 있다.
모든 메모리 페이로드 크기에 대한 메모리 판독 요청 패킷들은 단지 패킷 헤더, 패킷 테일, 및 각각의 물리적 메모리 어드레스를 필요로 한다. 이와 같이, 판독 요청들은 단일 FLIT을 이용하여 구성될 수 있다. 메모리 판독 응답들은 대응하는 메모리 판독 패킷에 요청되는 어드레스의 데이터를 포함하는 별개의 패킷들이다. 그러나, 기록 요청 및 원자 요청 패킷들은 또한 각각, 기록 및 판독-수정-기록 동작들을 위한 관련 입력 데이터도 포함해야 한다. 이와 같이, 이들 요청 유형은 2 FLIT 내지 9 FLIT의 패킷 폭들을 가질 수 있다. HMC 디바이스 사양은 패킷들 간 약한-순서화 모델을 정의한다. 이와 같이, 타겟 구현 내에 존재하는 지점들을 재 순서화하는 다수의 패킷이 존재할 수 있다. 보조 디바이스들 행의 도착 패킷들은 로컬 보울트 액세스를 기다려 그것들을 전달할 수 있다. 로컬 보울트들은 또한 각각의 보울트 뱅크들로 그리고 이들로부터 대역폭을 가장 효율적으로 사용하기 위해 대기 패킷들을 재순서화할 수도 있다. 그러나, 소정의 HMC 구현에 존재하는 재순서화 지점들은 특정한 링크로부터 보울트 내 특정한 뱅크로의 패킷들의 스트림의 순서를 유지하도록 정의될 수 있다. 이러한 순서화는 뒤에 메모리 판독 요청들이 따르는 메모리 기록 요청들이 정확한 및 결정론적 거동을 전달함을 보장한다.
HMC(200)에서의 링크 구조는 링크 구조 및 패킷화된 트랜잭션 프로토콜들을 유지하면서 단일 HMC(200) 디바이스보다 큰 용량들을 필요로 하는 메모리 서브시스템들의 구성을 가능하게 하기 위해 다수의 HMC(200)의 연쇄를 가능하게 한다. 연쇄에 관한 추가 세부사항들이 도 5를 참조하여 아래에서 논의된다.
도 4는 링크 인터페이스들(120)을 위한 그리고 HMC(200) 내 DRAM들(250)(도 1 내지 도 3)을 제어하는 로직 베이스(400)를 예시한다. 업스트림 링크들 및 다운스트림 링크들을 포함하는, 메모리 링크들(120)은 각 메모리 링크(120)를 위한 링크 인터페이스 제어기(410)에 의해 제어될 수 있다. 링크 인터페이스 제어기들(410)을 통해 전달된 패킷들은 크로스바 스위치(430)를 통해 전달될 수 있다. 패킷이 HMC(200) 상의 보울트 행인 경우, 크로스바 스위치(430)는 패킷을 메모리 제어 로직(440)으로 전달할 수 있다. 패킷이 다른 HMC(200) 행인 경우, 크로스바 스위치(430)는 패킷을 적절한 HMC(200)로 다시 송신될 적절한 링크 인터페이스 제어기(410)로 전달할 수 있다. 메모리 제어 로직(440) 및 다양한 보울트를 위한 보울트 로직(450)은 적절한 보울트 및 선택된 보울트에 대해 적절한 타이밍을 선택하기 위해 결합될 수 있다.
도 5는 하이브리드 메모리 큐브들(200-0 내지 200-5)의 연쇄를 예시한다. 앞서 서술된 바와 같이, 다수의 HMC 디바이스(200)는 CPU(510)가 이용 가능한 총 메모리 용량을 증가시키기 위해 함께 연쇄될 수 있다. HMC 메모리 시스템에서, 각 HMC(200)는 요청 패킷 헤더의 3-비트 칩 ID의 값을 통해 식별된다. 3-비트 칩 ID 필드는 또한 여기에서 "CUB 필드" 또는 "디바이스 ID"로서 언급될 수 있다. 따라서, 8개까지의 HMC 디바이스(200)의 네트워크가 CPU(510)를 위해 지원될 수 있다.
HMC들(200)의 상호 접속 및 상이한 HMC들(200)에 대한 라우팅을 위한 다양한 토폴로지는 복잡하고 다수의 경로를 포함할 수 있다. 따라서, 호스트 프로세서는 일반적으로 해당 HMC(200)를 위한 것이 아닌 패킷들이 어떻게 HMC(200) 상의 다른 링크들로 라우팅되어야 하는지를 결정하기 위해 각 HMC(200)로 구성 정보를 라우팅하는 로드들 및 라우팅 토폴로지들을 제어한다. 이러한 라우팅 정보는 각 HMC(200)가 적절한 목적지로의 요청 패킷들을 라우팅하기 위해 CUB 필드를 이용할 수 있게 한다. 그 결과, HMC(200)가 그 자체 행이 아닌 패킷을 프로세싱할 때, HMC(200)는 다른 HMC(200)에 송신될 HMC(200) 상의 다른 링크로 패킷을 연쇄하고 통과시킨다.
예를 들어, 도 5에서, CPU(510)가 CUB 필드 5를 갖는 요청 패킷을 송신하는 경우, 제1 HMC(200-1)는 요청 패킷을 제4 HMC(200-4)로 전달할 것이다. 제4 HMC(200-4)는 요청 패킷을 요청 패킷을 서비스하는 제5 HMC(520-5)에 전달할 것이다. 응답 패킷들은 다시 CPU(510)로 동일한 연쇄 경로를 따라간다.
도 6은 본 발명의 실시예들에 따른 추상화된 메모리 프로토콜들 및 추상화된 메모리에서의 가상 메모리 할당을 이용하는 시스템을 예시한다. 다수의 클라이언트(610A 내지 610C)는 추상화된 메모리 시스템 상호 접속부(620)에 액세스할 수 있다. 시스템 상호 접속부(620)는 많은 상이한 유형의 복합 토폴로지들의 임의의 수의 추상화된 메모리 모듈(700)을 포함할 수 있다. 패킷화된 메모리 요청들을 이용하는 추상화된 메모리 프로토콜들은 도 5를 참조하여 위에서 논의된 보다 단순한 HMC 토폴로지의 것과 유사한 방식으로 연쇄 방법론들 및 디바이스 ID들을 이용하여 이들 복합 토폴로지를 생성할 수 있다. 그러한 시스템에서, 요청 패킷은 모든 추상화된 메모리 모듈(700)이 요청 패킷이 그 자체 행임을 알도록 그것에 포함되는 디바이스 ID를 가질 수 있거나 또는 추상화된 메모리 모듈들(700)로 프로그램된 연쇄 방향들에 기초하여 다른 추상화된 메모리 모듈(700)로 전달되어야 한다. 따라서, 요청 패킷에서의 어드레스와 함께, 디바이스 ID가 클라이언트들(610A 내지 610C)에 의해 요청되는 어드레스의 부분인 것으로 고려될 수 있다.
각 추상화된 메모리 모듈(700)은 메모리 추상화 유닛 및 하나의 또는 메모리 디바이스들을 포함한다. 두 개의 추상화된 메모리 모듈(700-1 및 700-2)에 대한 확대도들이 도시된다. 비 제한적 예로서, 이들 확대도는 각 추상화된 메모리 모듈(700-1 및 700-2)의 어드레스 공간 내 네 개의 보호 존을 도시한다. 물론, 더욱 많은 보호 존이 추상화된 메모리 모듈(700) 내에 정의될 수 있거나, 또는 추상화된 메모리 모듈은 단일 보호 존을 포함할 수 있다.
추상화된 메모리 모듈(700-2)을 검토하면, 두 개의 상단 보호 존이 클라이언트 B(610B)에 할당되었음을 알 수 있다. 좌측 하단 보호 존은 클라이언트 C(610C)에 할당되었고 우측 하단 보호 존은 클라이언트 A(610A)에 할당되었다. 추상화된 메모리 모듈(700-1)을 검토하면, 좌측 상단 및 우측 하단 보호 존이 클라이언트 A(610A)에 할당되었음을 알 수 있다. 좌측 하단 보호 존은 클라이언트 C(610C)에 할당되었고 우측 상단 보호 존은 할당되지 않았다.
도 7은 본 개시의 실시예들에 따른 추상화 메모리 모듈(700)의 블록도를 예시한다. 추상화된 메모리 모듈(700)은 메모리 추상화 유닛(740) 및 하나 이상의 메모리 디바이스(730-1 내지 730-3)를 포함한다. 추상화된 메모리 모듈(700) 내 메모리 디바이스들(730)의 수는 단지 하나에서 여러 더즌, 또는 그 이상까지 크게 달라질 수 있다. 예시된 바와 같이, 추상화된 메모리 모듈(700)은 패킷화된 메모리 링크들로서 구성될 수 있는, 하나 이상의 메모리 링크(720)를 포함한다. 추상화된 메모리 모듈(700)이 연쇄 및 패킷 통과를 지원하도록 구성되는 경우, (예를 들어, HMC 프로토콜과 유사하게), 추상화된 메모리 모듈(700)은 일반적으로 하나보다 많은 메모리 링크(720)를 가질 것이다. 메모리 링크들(720)은 다수의 클라이언트(710) 및 다수의 추상화된 메모리 모듈(700)을 포함하여 다양한 복잡도들의 네트워크들을 생성하기 위해 클라이언트들(710) 또는 다른 추상화된 메모리 모듈들(700)에 결합될 수 있다.
추상화된 메모리 프로토콜 로직(750)은 메모리 링크들(720)로부터 수신되는 메모리 요청 패킷들을 해석하고 응답 패킷들을 생성한다. 다수의 메모리 링크(720)가 존재하는 경우, 링크 라우팅 모듈(760)은 수신된 패킷들이 이 특정 추상화된 메모리 모듈(700)에 대한 것인지 또는 메모리 요청이 다른 추상화된 메모리 모듈(700)에 의해 취급될 수 있도록 다른 메모리 링크(720)로 포워딩되어야 하는지를 결정하기 위해 포함될 수 있다.
메모리 요청이 추상화된 메모리 모듈(700)에 대한 것인 경우, 요청은 메모리 요청에 의해 어드레싱될 특정 메모리 디바이스들(730-1 내지 730-3)에 액세스하기 위한 신호들을 생성하는, 메모리 제어 로직(770)으로 라우팅된다.
매핑 로직(780)은 요청 패킷에 클라이언트(710)에 의해 정의된 어드레스 및 메모리 디바이스들(730-1 내지 730-3)에서의 물리적 어드레스들로부터 변환을 일으키기 위해 포함된다. 매핑 로직(780)은 실제 가상의 어드레스 대 물리적 어드레스 변환을 일으키기 위해 다수의 방법으로 구성될 수 있다.
하나의 비 제한적 예로서, 변환 테이블(782)은 페이지 테이블로 어드레스를 생성하기 위한 가상 어드레스의 부분(예를 들어, 메모리 요청에서의 상단 어드레스 비트들의 몇몇으로부터 얻은 키)을 가져가기 위한 페이지 테이블을 포함할 수 있으며, 페이지 테이블은 메모리에 대한 상단 물리적 어드레스 비트들을 생성한다. 따라서, 페이지 테이블은 보호 존들의 베이스 위치들을 생성한다. 이러한 시나리오에서, 메모리 요청에서의 하단 어드레스 비트들은 보호 존 내 적절한 어드레스를 선택하기 위해 사용될 수 있다.
다른 비 제한적 예로서, 변환 테이블(782)은 레지스터들, 이를테면, 예를 들어, 보호 존의 베이스 위치를 정의하기 위한 베이스 레지스터 및 보호 존의 크기를 정의하기 위한 경계 레지스터를 갖고 실현될 수 있다. 이러한 시나리오에서, 패킷 요청은 보호 존 내 모든 메모리 위치를 어드레싱하기 위해 경계 레지스터에 의해 정의될 수 있는 비트 폭을 갖는 어드레스 필드 및 상측 어드레스 비트들을 정의할 수 있는, 적절한 베이스 레지스터를 선택하는, 존 ID를 포함할 수 있다.
HMC 디바이스들을 이용하는 시스템에서, 보호 존들은 위에서 설명된 바와 같이, HMC 디바이스 내에 이미 정의된 보울트들에 기초할 수 있다. 보울트들의 물리적 위치 및 크기는 HMC 디바이스에 의해 이미 정의되었고 보울트들은 단지 할당 요청 클라이언트에 할당되고 결속되기만 하면 된다.
존 허가 로직(790)은 어떤 클라이언트들(710)이 임의의 특정한 존에 액세스할 수 있는지를 정의하기 위해 포함될 수 있다. 존 허가 로직(790)은 또한 아래에서 보다 완전히 논의된 바와 같이, 다양한 가능한 보호 존을 다양한 클라이언트(710)에 할당하기 위해 매핑 로직(780)과 조합하여 사용될 수 있다.
보호 존들의 할당은 클라이언트들을 위한 상이한 유형들의 가상 메모리 환경들을 생성할 수 있다. 몇몇 매핑에서, 클라이언트(710)를 위한 가상 어드레스 공간은 어드레스 공간의 베이스 및 어드레스 공간의 최상단 사이에 어떤 홀도 없게 인접하게 나타날 수 있다. 다른 매핑들에서, 클라이언트(710)를 위한 가상 어드레스 공간은 인접하지 않게(즉, 단편화되게) 나타날 수 있다. 이러한 단편화된 구성에서, 클라이언트(710)는 단지 그것에 할당된 다양한 존 ID 및 해당 존 내 어드레스들을 어드레싱하는 법을 알 수 있다.
요약하면, 몇몇 실시예에서, 장치는 하나 이상의 메모리 디바이스에서의 타이밍 및 네이밍을 위한 하나 이상의 클라이언트로부터의 메모리 요청들의 타이밍 및 네이밍을 추상화하기 위한 메모리 추상화 유닛을 포함한다. 메모리 추상화 유닛은 하나 이상의 클라이언트로부터의 메모리 요청들을 해석하기 위한 추상화된 메모리 프로토콜 로직을 포함한다. 메모리 추상화 유닛은 또한 요청 클라이언트에 의한 메모리 액세스 요청에 의해 정의된 네이밍을 하나 이상의 메모리 디바이스 중 적어도 하나에서 선택된 보호 존의 가상의 물리적 어드레스로 변환하기 위한 매핑 로직을 포함한다. 메모리 추상화 유닛은 가상의 물리적 어드레스의 하나 이상의 메모리 디바이스에 액세스하기 위한 메모리 제어 로직을 포함한다. 또한, 장치에서, 선택된 보호 존은 메모리 추상화 유닛에 의해 이전에 정의되고 요청 클라이언트에게 할당되었다.
다른 실시예들에서, 하이브리드 메모리 큐브는 복수의 메모리 디바이스 및 로직 베이스를 포함한다. 로직 베이스는 패킷화된 메모리 요청을 해석하도록 구성된 하나 이상의 링크 인터페이스 제어기 및 패킷화된 메모리 요청에 제공된 어드레스를 복수의 메모리 디바이스 중 하나 이상의 가상의 물리적 어드레스로 변환하도록 구성된 매핑 로직으로서, 가상의 물리적 어드레스는 미리 정의된 보호 존에 속하는, 상기 매핑 로직을 포함한다. 로직 베이스는 또한 가상의 물리적 어드레스를 갖는 복수의 메모리 디바이스 중 하나 이상에 액세스하도록 구성된 메모리 제어 로직을 포함한다.
다른 실시예들에서, 시스템은 하나 이상의 클라이언트 및 하나 이상의 추상화된 메모리 모듈을 포함한다. 각 추상화된 메모리 모듈은 하나 이상의 메모리 디바이스 및 추상화된 메모리 프로토콜 로직을 포함한다. 추상화된 메모리 프로토콜 로직은 하나 이상의 클라이언트로부터의 메모리 요청들을 해석하고, 추상화된 메모리 모듈과 연관된 하나 이상의 메모리 디바이스 행인 메모리 요청들을 서비스하기 위한 것이다. 추상화된 메모리 프로토콜 로직은 또한 추상화된 메모리 모듈 행이 아닌 메모리 요청들을 다른 추상화된 메모리 모듈에 전달하기 위한 것이다. 각 추상화된 메모리 모듈은 또한 요청 클라이언트에 의한 메모리 액세스 요청에 의해 정의된 어드레스를 하나 이상의 메모리 디바이스 중 적어도 하나에서 선택된 보호 존의 가상의 물리적 어드레스로 변환하기 위한 매핑 로직을 포함한다. 각 추상화된 메모리 모듈은 또한 가상의 물리적 어드레스의 하나 이상의 메모리 디바이스 중 적어도 하나에 액세스하기 위한 메모리 제어 로직을 포함한다.
도 8은 인접하게 할당되는 물리적 어드레스 공간(820) 및 가상 어드레스 공간들(830 및 840)을 도시하는 메모리 도해를 예시한다. 이러한 고도로 가상화된 매핑에서, 가상 어드레스 공간들(830 및 840)은 일반적으로 0에서 시작되고 많은 보호 존이 어떻게 할당되었는지에 기초하여 최대 어드레스까지 인접하여 확장된다. 보다 많은 존이 할당될 때, 그것들은 일반적으로 어드레스 공간의 최상단을 향해 덧붙는다. 비 제한적 예로서, 이러한 유형의 매핑은 가상 소프트웨어 기계에서 유용할 수 있다. 예를 들어, 다수의 운영 체제가 단일 클라이언트 상에서 실행하고 있을 때. 운영 체제들은 특정한 소프트웨어 요소들이 특정한 어드레스들에 나타날 것으로 예상할 수 있다. 따라서, 가상 소프트웨어 환경에서 실행되는 운영 체제는 0에서 시작되고 인접하여 구축되는 가상 어드레스들을 가질 수 있다.
도 8은 제1 클라이언트(810A) 및 제2 클라이언트(810B)를 예시한다. 양 클라이언트(810A 및 810B)는 동일한 물리적 메모리(820)에 액세스하고 있다. 물리적 메모리(820)는 다양한 크기의 물리적 보호 존들(820-1 내지 820-6)로 세그먼트화된다. 제1 클라이언트(810A)는 네 개의 가상 보호 존(830-1 내지 830-4)을 인접한 가상 메모리 공간(830)을 생성하도록 할당하였다. 또한 도 7을 참조하면, 하나 이상의 추상화된 메모리 모듈(700)에서의 매핑 로직(780)이 가상 보호 존(830-1)을 물리적 보호 존(820-1)에 매핑하였다. 유사하게, 가상 보호 존(830-2)은 물리적 보호 존(820-5)에 매핑되고, 가상 보호 존(830-3)은 물리적 보호 존(820-3)에 매핑되며, 가상 보호 존(830-4)은 물리적 보호 존(820-6)에 매핑된다.
제2 클라이언트(810B)는 두 개의 가상 보호 존(840-1 및 840-2)을 인접한 가상 메모리 공간(840)을 생성하도록 할당하였다. 또한 도 7을 참조하면, 하나 이상의 추상화된 메모리 모듈(700)에서의 매핑 로직(780)이 가상 보호 존(840-1)을 물리적 보호 존(820-2)에 매핑하였다. 유사하게, 가상 보호 존(840-2)은 물리적 보호 존(820-4)에 매핑된다.
물론, 복합 시스템들에서, 물리적 어드레스 공간은 훨씬 더 클 수 있고 수백 개의 보호 존을 포함할 수 있다. 덧붙여, 복합 시스템들은 매우 큰 가상 어드레스 공간을 갖는 많은 클라이언트를 포함할 수 있다.
따라서, 메모리 시스템은 물리적 메모리 어드레스 공간 및 하나 이상의 가상 메모리 어드레스 공간을 정의하는 복수의 메모리 디바이스를 포함한다. 각 가상 메모리 어드레스 공간은 인접한 가상 어드레스 공간을 형성하기 위해 복수의 가상 보호 존을 포함하되, 각 가상 보호 존은 추상화된 메모리 프로토콜로 통신하도록 구성되는 추상화된 메모리 모듈에 의해 물리적 메모리 어드레스 공간 내 물리적 보호 존에 매핑된다.
도 9는 인접하지 않게(즉, 단편화되게) 할당될 수 있는 물리적 어드레스 공간(920) 및 가상 어드레스 공간들(930 및 940)을 도시하는 메모리 도해를 예시한다. 매우 큰 어드레스 공간을 갖고(예를 들어, 64-비트 어드레스 시스템들) 고도로 세그먼트화된 어드레스 공간들을 동작시킬 수 있는 프로세서들 및/또는 가상 클라이언트들을 갖는 시스템들에서, 어드레스 변환을 수행할 어떠한 필요도 없을 수 있다. 그러한 시스템들에서, 클라이언트가 보는 가상 어드레스 공간(930 및 940)은 단편화되어 나타날 수 있다. 그러나, 보호 존들은 여전히 도 8에서의 실시예와 같이 할당되고 보호될 수 있으나, 어드레스 변환에 대한 어떠한 필요도 없다. 도 9의 실시예는 많은 보안 익스플로잇들(및 프로그램 버그들)이 어드레스 공간의 하나의 세그먼트에서 급속히 퍼져 다른 세그먼트로 생성될 수 있기 때문에 추가 보안을 잠재적으로 준비할 수 있다. 상이한 메모리 부분으로부터의 세그먼트들을 할당하는 다수의 클라이언트에 의해 자연적으로 생성되는 "홀들(holes)"은 클라이언트가 그것에 할당되지 않았던 보호 존에 액세스하려고 시도한 경우 예외들을 낳을 수 있다.
도 9는 제1 클라이언트(910A) 및 제2 클라이언트(910B)를 예시한다. 양 클라이언트(910A 및 910B)는 동일한 물리적 메모리(920)에 액세스하고 있다. 물리적 메모리(920)는 다양한 크기의 물리적 보호 존들(920-1 내지 920-6)로 세그먼트화된다. 제1 클라이언트(910A)는 세 개의 가상 보호 존(930-1 내지 930-3)을 단편화된 가상 메모리 공간(930)을 생성하도록 할당하였다. 또한 도 7을 참조하면, 하나 이상의 추상화된 메모리 모듈(700)에서의 매핑 로직(780)이 가상 보호 존(930-1)을 물리적 보호 존(920-1)에 매핑하였다. 유사하게, 가상 보호 존(930-2)은 물리적 보호 존(920-5)에 매핑되며, 가상 보호 존(930-3)은 물리적 보호 존(920-6)에 매핑된다.
제2 클라이언트(910B)는 두 개의 보호 존(940-1 및 940-2)을 단편화된 가상 메모리 공간(940)을 생성하도록 할당하였다. 또한 도 7을 참조하면, 하나 이상의 추상화된 메모리 모듈(700)에서의 매핑 로직(780)이 가상 보호 존(940-1)을 물리적 보호 존(920-2)에 매핑하였다. 유사하게, 가상 보호 존(940-2)은 물리적 보호 존(920-4)에 매핑된다. 물리적 보호 존(920-3)은 그것이 아직 클라이언트에 할당되지 않았기 때문에 이용 가능한 보호 존이다.
물론, 복합 시스템들에서, 물리적 어드레스 공간은 훨씬 더 클 수 있고 수백 개의 보호 존을 포함할 수 있다. 덧붙여, 복합 시스템들은 매우 큰 가상 어드레스 공간을 갖는 많은 클라이언트를 포함할 수 있다.
따라서, 메모리 시스템은 물리적 메모리 어드레스 공간 및 하나 이상의 가상 메모리 어드레스 공간을 정의하는 복수의 메모리 디바이스를 포함한다. 각 가상 메모리 어드레스 공간은 단편화된 가상 어드레스 공간을 형성하기 위해 복수의 가상 보호 존을 포함하되, 각 가상 보호 존은 추상화된 메모리 프로토콜로 통신하도록 구성되는 추상화된 메모리 모듈에 의해 물리적 메모리 어드레스 공간 내 물리적 보호 존에 매핑된다.
도 10은 추상화된 메모리 프로토콜에서의 보호 존들을 이용하여 가상 어드레스 공간에 액세스하는 프로세스를 예시한다. 동작(1010)에서 클라이언트는 가상 위치를 요청한다. 비 제한적 예로서, 이러한 요청은 적절한 추상화된 메모리 모듈(700)(도 7)을 선택하는 디바이스 ID, 추상화된 메모리 모듈(700) 상에 선택된 보호 존을 의하기 위한 존 ID, 및 보호 존 내 어드레스에 의해 정의되는 네임일 수 있다. 동작(1020)에서, 적절한 추상화된 메모리 모듈(700) 상의 매핑 로직(780)(도 7)은 요청에서의 네임을 물리적 어드레스 위치로 변환한다. 덧붙여, 요청은 어떤 클라이언트가 요청을 생성했는지를 표시하는 클라이언트 ID를 포함할 수 있으며, 존 허가 로직(790)(도 7)은 클라이언트가 물리적 보호 존에 액세스하는 허가를 가지는지를 검증할 수 있다. 조회가 실패하거나 클라이언트가 허가를 가지지 않는 경우, 동작 블록(1050)은 다시 요청 클라이언트로 에러가 보고됨을 나타낸다. 조회가 성공적이도 클라이언트가 허가를 가지는 경우, 물리적 메모리 어드레스 공간(1030)에서의 물리적 보호 존(1040)에 액세스될 수 있다.
보호 존들은 다수의 상이한 방법으로 할당될 수 있다. 비 제한적 예로서, 클라이언트는 특정한 추상화된 메모리 모듈(700)(도 7)에 보호 존을 할당하기 위한 요청을 송신할 수 있다. 몇몇 실시예에서, 클라이언트는 또한 요청된 보호 존에 대한 특정 크기를 요청할 수 있다. 다른 실시예들에서, 크기는 요청되지 않을 수 있으며, 추상화된 메모리 모듈(700)이 보호 존의 크기를 정의할 수 있다. 추상화된 메모리 모듈(700)이 이용 가능한 보호 존을 가지는 경우, 그것은 보호 존을 요청 클라이언트에 할당하며, 할당을 다시 존 ID를 갖는 클라이언트에게 보고할 수 있다. 몇몇 실시예에서, 추상화된 메모리 모듈(700)은 해당 보호 존에 대한 후속 액세스들이 해당 보호 존에 액세스하는 허가를 갖는 클라이언트에 의한 것인지를 검증할 수 있도록, 클라이언트 ID를 갖는 요청 클라이언트를 추적할 수 있다. 이러한 방식으로, 다수의 클라이언트에 동일한 보호 존에 대한 액세스가 주어질 수 있으며, 각 클라이언트는 상이한 가상 대 물리적 어드레스 변환을 가질 수 있다.
대안적으로, 클라이언트가 특정한 추상화된 메모리 모듈(700)로부터의 보호 존을 요청하기보다는, 클라이언트는 일반적인 할당 요청을 발송할 수 있다. 그 다음 이러한 일반적인 할당 요청은 할당하기 위한 자유 보호 존을 갖는 제1 모듈을 찾기 위해 추상화된 메모리 모듈들(700)의 네트워크에 걸쳐 연쇄 알고리즘을 따를 수 있다.
다른 할당 프로세스에서, 클라이언트는 모듈이 보호 존을 위한 자유 공간(예를 들어, 고정된 수의 가변 크기 세그먼트 또는 고정된 수의 페이지-형 구조들 중 어느 하나)을 갖는지 여부를 결정하기 위해 추상화된 메모리 모듈(700)에서의 공개 테이블을 판독할 수 있다. 클라이언트는 또한 프로토콜의 부분으로서 추상화된 메모리 모듈(700)에 질의할 수 있다. 예를 들어, 클라이언트는 "나를 위해 X GByte를 할당하라"와 같이 말하는 요청을 송신할 수 있으며, 이는 성공하거나 실패한다. 대안적으로, 클라이언트는 질의를 "X GByte를 갖는가?"와 같은 두 개의 질의로 분할할 수 있다, 대답이 예인 경우, 클라이언트는 X GByte의 해당 보호 존을 해당 클라이언트에 제공하기 위한 요청을 덧붙일 수 있다.
성공적인 할당 요청에 응답하여, 추상화된 메모리 모듈(700)은 "메모리의 이 블록은 이제 어드레스들 X-Y를 갖는 존 A에 속한다"(여기서 A는 키 또는 존 ID이며 X-Y는 새로운 물리적 메모리 어드레스들은 설명함)와 같이 말하는 응답 패킷을 생성할 수 있다.
존 허가 로직(790)(도 7)은 공유된 데이터베이스들을 이네이블하기 위해 세그먼트-당/ID-당을 기초로 이네이블될 수 있는, 다른 허가 필드들(예를 들어, 판독 액세스 또는 기록 액세스)를 포함할 수 있다.
각 클라이언트는 어떤 보호 존들이 그것에 할당되었는지를 인식한다. 클라이언트가 더 이상 보호 존을 필요로 하지 않는 경우, 그것은 할당 해제 요청을 송신할 수 있다. 추상화된 메모리 모듈(700)은 할당 해제 요청을 수락하고 매핑 로직에서 할당된 보호 존을 제거할 수 있다.
따라서, 메모리에 액세스하는 방법은 추상화된 메모리 프로토콜로 메모리 액세스 요청을 생성하는 단계 및 추상화된 메모리 모듈에서 메모리 액세스 요청을 수락하는 단계를 포함한다. 방법은 또한 메모리 액세스 요청에 의해 정의된 네이밍을 추상화된 메모리 모듈과 연관된 하나 이상의 메모리 디바이스 내 선택된 보호 존의 가상의 물리적 어드레스로 변환하는 단계 및 가상의 물리적 어드레스의 하나 이상의 메모리 디바이스에 액세스하는 단계를 포함한다.
본 발명의 실시예들은 제한 없이, 아래에 제시된 바와 같이, 더 특징지어질 수 있다.
실시예 1. 장치로서,
하나 이상의 메모리 디바이스의 네이밍을 위한 하나 이상의 클라이언트로부터의 메모리 액세스 요청들의 네이밍을 추상화하기 위해 구성된 메모리 추상화 유닛을 포함하며, 상기 메모리 추상화 유닛은:
상기 하나 이상의 클라이언트로부터의 상기 메모리 요청들을 해석하기 위한 추상화된 메모리 프로토콜 로직;
상기 하나 이상의 클라이언트 중 요청 클라이언트에 의한 상기 메모리 액세스 요청의 상기 네이밍을 상기 하나 이상의 메모리 디바이스 중 적어도 하나에서 선택된 보호 존의 가상의 물리적 어드레스로 변환하기 위한 매핑 로직; 및
상기 가상의 물리적 어드레스의 상기 하나 이상의 메모리 디바이스에 액세스하기 위한 메모리 제어 로직을 포함하되;
상기 선택된 보호 존은 상기 메모리 추상화 유닛에 의해 이전에 정의되고 상기 요청 클라이언트에게 할당되었던 것인, 장치.
실시예 2. 실시예 1에 있어서, 상기 메모리 추상화 유닛은 상기 메모리 액세스 요청이 상기 요청 클라이언트가 상기 선택된 보호 존에 액세스하는 허가를 가질 때 완료되고, 상기 요청 클라이언트가 상기 선택된 보호 존에 액세스하는 허가를 가지지 않을 때 에러를 보고할 수 있게 하도록 구성되는 상기 메모리 추상화 유닛 내 존 허가 로직을 더 포함하는, 장치.
실시예 3. 실시예 2에 있어서, 상기 존 허가 로직은 상기 메모리 액세스 요청이 판독 액세스인지 또는 기록 액세스인지에 응답하여 상기 선택된 보호 존에 액세스하는 허가를 승인하도록 더 구성되는, 장치.
실시예 4. 실시예 1에 있어서, 상기 메모리 추상화 유닛은 상기 메모리 액세스 요청이 상기 메모리 액세스 요청에 제공된 어드레스가 상기 선택된 보호 존 내에 있을 때 완료되고, 상기 메모리 액세스 요청에 제공된 상기 어드레스가 어떠한 정의된 보호 존들에도 있지 않을 때 에러를 보고할 수 있게 하도록 구성되는 상기 메모리 추상화 유닛 내 존 허가 로직을 더 포함하는, 장치.
실시예 5. 실시예 1 내지 4 중 어느 하나에 있어서, 상기 매핑 로직은:
상기 하나 이상의 클라이언트 중 할당 요청 클라이언트로부터 할당 요청을 수락하고;
상기 하나 이상의 메모리 디바이스 중 하나의 메모리 디바이스에서 이용 가능한 보호 존을 결정하고;
상기 할당 요청 클라이언트에 상기 이용 가능한 보호 존을 할당하며; 그리고
상기 할당 요청 클라이언트에게 할당된 상기 보호 존의 위치를 보고하기 위해 더 구성되는, 장치.
실시예 6. 실시예 5에 있어서, 상기 매핑 로직은:
상기 할당 요청 클라이언트로부터의 할당 해제 요청을 수락하며; 그리고
상기 매핑 로직에서 할당된 상기 보호 존을 제거하기 위해 더 구성되는, 장치.
실시예 7. 실시예 5에 있어서, 상기 할당 요청 클라이언트로부터 상기 할당 요청을 수락하는 것은 요청된 크기를 수락하는 것을 포함하고, 상기 이용 가능한 보호 존을 할당하는 것은 상기 요청된 크기로 상기 이용 가능한 보호 존을 할당하는 것을 포함하는, 장치.
실시예 8. 실시예 1 내지 7 중 어느 하나에 있어서, 상기 추상화된 메모리 프로토콜 로직은 하이브리드 메모리 큐브 프로토콜을 이용하여 메모리 액세스들을 해석하기 위해 구성되는, 장치.
실시예 9. 실시예 8에 있어서, 상기 보호 존들은 하이브리드 메모리 큐브에서의 보울트들(vaults)로서 구성되는, 장치.
실시예 10. 실시예 1 내지 9 중 어느 하나에 있어서, 상기 매핑 로직은 상기 요청 클라이언트로부터의 상기 네이밍을 액세스될 상기 하나 이상의 메모리 디바이스 중 하나의 메모리 디바이스에 대한 상기 네이밍으로 변환하기 위한 어드레스 변환 테이블을 포함하는, 장치.
실시예 11. 실시예 1 내지 9 중 어느 하나에 있어서, 상기 매핑 로직은 메모리 내 각 할당된 보호 존의 위치 및 크기를 정의하기 위한 베이스 레지스터 및 경계 레지스터를 포함하는, 장치.
실시예 12. 실시예 1 내지 11 중 어느 하나에 있어서, 상기 메모리 액세스 요청은 상기 요청 클라이언트에 대한 클라이언트 ID를 포함하고, 상기 메모리 제어 로직은 상기 클라이언트 ID가 상기 선택된 보호 존에 대한 허가를 가지지 않는 경우 상기 가상의 물리적 어드레스에 액세스하지 못하는, 장치.
실시예 13. 실시예 1 내지 11 중 어느 하나에 있어서, 상기 메모리 액세스 요청에 의해 정의되는 상기 어드레스는 존 ID 및 상기 선택된 보호 존 내 어드레스를 포함하고, 상기 매핑 로직은 상기 존 ID에 응답하여 상기 가상의 물리적 어드레스의 적어도 부분을 생성하는, 장치.
실시예 14. 하이브리드 메모리 큐브로서,
복수의 메모리 디바이스;
로직 베이스를 포함하며, 상기 로직 베이스는:
패킷화된 메모리 요청을 해석도록 구성된 하나 이상의 링크 인터페이스 제어기; 및
상기 패킷화된 메모리 요청에 제공된 어드레스를 상기 복수의 메모리 디바이스 중 하나 이상의 가상의 물리적 어드레스로 변환하도록 구성되는 매핑 로직으로서, 상기 가상의 물리적 어드레스는 미리 정의된 보호 존에 속하는, 상기 매핑 로직; 및
상기 가상의 물리적 어드레스를 갖는 상기 복수의 메모리 디바이스 중 상기 하나 이상에 액세스하도록 구성된 메모리 제어 로직을 포함하는, 하이브리드 메모리 큐브.
실시예 15. 실시예 14에 있어서, 상기 로직 베이스는 상기 패킷화된 메모리 요청이 상기 패킷화된 메모리 요청에 제공된 어드레스가 상기 선택된 보호 존 내에 있을 때 완료되고, 상기 패킷화된 메모리 요청에 제공된 상기 어드레스가 어떠한 정의된 보호 존들에도 있지 않을 때 에러를 보고할 수 있게 하도록 구성되는 존 허가 로직을 더 포함하는, 하이브리드 메모리 큐브.
실시예 16. 실시예 14 및 15 중 어느 하나에 있어서, 상기 미리 정의된 보호 존은 상기 하이브리드 메모리 큐브에서의 보울트로서 구성되는, 하이브리드 메모리 큐브.
실시예 17. 실시예 14 내지 16 중 어느 하나에 있어서, 상기 매핑 로직은:
할당 요청 클라이언트로부터 할당 요청을 수락하고;
상기 복수의 메모리 디바이스 중 하나 이상의 메모리 디바이스에서 이용 가능한 보호 존을 결정하며; 그리고
상기 할당 요청 클라이언트에 상기 이용 가능한 보호 존을 할당하며; 그리고
상기 할당 요청 클라이언트에게 할당된 상기 보호 존의 위치를 보고하기 위해 더 구성되는, 하이브리드 메모리 큐브.
실시예 18. 실시예 17에 있어서, 상기 매핑 로직은:
상기 할당 요청 클라이언트로부터의 할당 해제 요청을 수락하며; 그리고
상기 매핑 로직에서 할당된 상기 보호 존을 제거하기 위해 더 구성되는, 하이브리드 메모리 큐브.
실시예 19. 실시예 17에 있어서, 상기 할당 요청 클라이언트로부터 상기 할당 요청을 수락하는 것은 요청된 크기를 수락하는 것을 포함하고, 상기 이용 가능한 보호 존을 할당하는 것은 상기 요청된 크기로 상기 이용 가능한 보호 존을 할당하는 것을 포함하는, 하이브리드 메모리 큐브.
실시예 20. 시스템으로서:
하나 이상의 추상화된 메모리 모듈을 포함하며, 각 추상화된 메모리 모듈은:
하나 이상의 메모리 디바이스: 및
추상화된 메모리 프로토콜 로직으로서:
하나 이상의 클라이언트로부터의 메모리 요청들을 해석하고;
상기 추상화된 메모리 모듈과 연관된 상기 하나 이상의 메모리 디바이스 행인 상기 메모리 요청들을 서비스하며; 그리고
상기 추상화된 메모리 모듈 행이 아닌 상기 메모리 요청들을 다른 추상화된 메모리 모듈에 전달하기 위한, 상기 추상화된 메모리 프로토콜 로직;
상기 하나 이상의 클라이언트 중 요청 클라이언트에 의한 상기 메모리 액세스 요청에 의해 정의된 어드레스를 상기 하나 이상의 메모리 디바이스 중 적어도 하나에서 선택된 보호 존의 가상의 물리적 어드레스로 변환하기 위한 매핑 로직; 및
상기 가상의 물리적 어드레스의 상기 하나 이상의 메모리 디바이스 중 적어도 하나에 액세스하기 위한 메모리 제어 로직을 포함하는, 시스템.
실시예 21. 실시예 20에 있어서, 하나 이상의 추상화된 메모리 모듈의 각각은 모듈 ID를 포함하고 메모리 요청들은 하나 이상의 메모리 모듈 중 어느 추상화된 메모리 모듈이 어드레스를 사용할지를 식별하는 모듈 ID를 포함하는, 시스템.
실시예 22. 실시예 20 및 21 중 어느 하나에 있어서, 상기 메모리 액세스 요청에 의해 정의되는 상기 어드레스는 존 ID 및 상기 선택된 보호 존 내 어드레스를 포함하고, 상기 매핑 로직은 상기 존 ID에 응답하여 상기 가상의 물리적 어드레스의 적어도 부분을 생성하는, 시스템.
실시예 23. 실시예 20 내지 22 중 어느 하나에 있어서, 상기 하나 이상의 추상화된 메모리 모듈은 하이브리드 메모리 큐브들을 포함하는, 시스템.
실시예 24. 메모리 시스템으로서,
물리적 메모리 어드레스 공간을 정의하는 복수의 메모리 디바이스;
각 가상 메모리 어드레스 공간은 인접한 가상 어드레스 공간을 형성하기 위해 복수의 가상 보호 존을 포함하는, 하나 이상의 가상 메모리 어드레스 공간을 포함하되, 각 가상 보호 존은 추상화된 메모리 프로토콜로 통신하도록 구성되는 추상화된 메모리 모듈에 의해 물리적 메모리 어드레스 공간 내 물리적 보호 존에 매핑되는, 메모리 시스템.
실시예 25. 실시예 24에 있어서, 물리적 보호 존은 추상화된 메모리 모듈에 의해 선택된 보호 존에 액세스하는 허가가 주어진 요청 클라이언트에 의해 단지 액세스 가능한, 메모리 시스템.
실시예 26. 실시예 24 및 25 중 어느 하나에 있어서, 적어도 하나의 물리적 보호 존은 두 개 이상의 가상 메모리 어드레스 공간 중 적어도 두 개의 가상 메모리 어드레스 공간 내 가상 보호 존에 매핑되는, 메모리 시스템.
실시예 27. 메모리 시스템으로서,
물리적 메모리 어드레스 공간을 정의하는 복수의 메모리 디바이스;
각 가상 메모리 어드레스 공간은 단편화된 가상 어드레스 공간을 형성하기 위해 복수의 가상 보호 존을 포함하는, 하나 이상의 가상 메모리 어드레스 공간을 포함하되, 각 가상 보호 존은 추상화된 메모리 프로토콜로 통신하도록 구성되는 추상화된 메모리 모듈에 의해 물리적 메모리 어드레스 공간 내 물리적 보호 존에 매핑되는, 메모리 시스템.
실시예 28. 실시예 27에 있어서, 물리적 보호 존은 추상화된 메모리 모듈에 의해 선택된 보호 존에 액세스하는 허가가 주어진 요청 클라이언트에 의해 단지 액세스 가능한, 메모리 시스템.
실시예 29. 실시예 27 및 28 중 어느 하나에 있어서, 적어도 하나의 물리적 보호 존은 두 개 이상의 가상 메모리 어드레스 공간 중 적어도 두 개의 가상 메모리 어드레스 공간 내 가상 보호 존에 매핑되는, 메모리 시스템.
실시예 30. 메모리에 액세스하는 방법으로서,
추상화된 메모리 프로토콜로 메모리 액세스 요청을 발생시키는 단계;
추상화된 메모리 모듈에서 상기 메모리 액세스 요청을 수락하는 단계;
상기 메모리 액세스 요청에 의해 정의된 네이밍을 상기 추상화된 메모리 모듈과 연관된 하나 이상의 메모리 디바이스 내 선택된 보호 존의 가상의 물리적 어드레스로 변환하는 단계; 및
상기 가상의 물리적 어드레스의 상기 하나 이상의 메모리 디바이스에 액세스하는 단계를 포함하는, 방법.
실시예 31. 실시예 30에 있어서, 상기 메모리 액세스 요청이 상기 메모리 요청을 발생시킨 요청 클라이언트가 상기 선택된 보호 존에 액세스하는 허가를 가질 때 완료되고, 상기 요청 클라이언트가 상기 선택된 보호 존에 액세스하는 허가를 가지지 않을 때 에러를 보고할 수 있게 하는 단계를 더 포함하는, 방법.
실시예 32. 실시예 30 및 32 중 어느 하나에 있어서, 상기 메모리 액세스 요청이 판독 액세스인지 또는 기록 액세스인지에 응답하여 상기 선택된 보호 존에 액세스하는 허가를 승인하는 단계를 더 포함하는, 방법.
실시예 33. 실시예 30에 있어서, 상기 메모리 액세스 요청이 상기 메모리 액세스 요청에 제공된 상기 어드레스가 상기 선택된 보호 존 내에 있을 때 완료되고, 상기 메모리 액세스 요청에 제공된 상기 어드레스가 어떠한 정의된 보호 존들에도 있지 않을 때 에러를 보고할 수 있게 하는 단계를 더 포함하는, 방법.
위에서 설명되고 첨부 도면들에 예시된 본 개시의 실시예들은 이들 실시예이 본 개시의 실시예들의 단지 예들이기 때문에, 본 발명의 범위를 제한하지 않는다. 본 발명은 첨부된 청구항들 및 이들의 법적 등가물들에 의해 정의된다. 임의의 등가 실시예들은 본 발명의 범위 내에 있다. 확실히, 여기에 제시되고 설명된 것들에 추가하여, 본 개시의 다양한 변형예, 이를테면 설명된 요소들의 대안적인 유용한 조합들은 설명으로부터 당해 기술 분야에서의 통상의 기술자들에 명백하게 될 것이다. 그러한 변형예들 및 실시예들은 또한 첨부된 청구항들 및 이들의 법적 등가물들의 범위 내에 있다.

Claims (22)

  1. 장치로서,
    하나 이상의 메모리 디바이스에서의 네이밍(naming)을 위한 하나 이상의 클라이언트로부터의 메모리 액세스 요청들의 네이밍을 추상화하기 위해 구성된 메모리 추상화 유닛을 포함하며, 상기 메모리 추상화 유닛은:
    상기 하나 이상의 클라이언트로부터의 상기 메모리 액세스 요청들을 해석하기 위한 추상화된 메모리 프로토콜 로직;
    상기 하나 이상의 클라이언트 중 요청 클라이언트에 의한 상기 메모리 액세스 요청의 상기 네이밍에 의해 정의된 어드레스를 상기 하나 이상의 메모리 디바이스 중 적어도 하나에서 선택된 보호 존(protection zone)의 가상의 물리적 어드레스로 변환하기 위한 매핑 로직(mapping logic); 및
    상기 가상의 물리적 어드레스의 상기 하나 이상의 메모리 디바이스에 액세스하기 위한 메모리 제어 로직을 포함하되;
    상기 선택된 보호 존은 상기 메모리 추상화 유닛에 의해 이전에 정의되고 상기 요청 클라이언트에게 할당되었던 것인, 장치.
  2. 청구항 1에 있어서, 상기 메모리 추상화 유닛은 상기 메모리 액세스 요청이 상기 요청 클라이언트가 상기 선택된 보호 존에 액세스하는 허가를 가질 때 완료되고, 상기 요청 클라이언트가 상기 선택된 보호 존에 액세스하는 허가를 가지지 않을 때 에러를 보고할 수 있게 하도록 구성되는 상기 메모리 추상화 유닛 내 존 허가 로직을 더 포함하는, 장치.
  3. 청구항 2에 있어서, 상기 존 허가 로직은 상기 메모리 액세스 요청이 판독 액세스인지 또는 기록 액세스인지에 응답하여 상기 선택된 보호 존에 액세스하는 허가를 승인하도록 더 구성되는, 장치.
  4. 청구항 1에 있어서, 상기 메모리 추상화 유닛은 상기 메모리 액세스 요청이 상기 메모리 액세스 요청에 제공된 어드레스가 상기 선택된 보호 존 내에 있을 때 완료되고, 상기 메모리 액세스 요청에 제공된 상기 어드레스가 어떠한 정의된 보호 존들에도 있지 않을 때 에러를 보고할 수 있게 하도록 구성되는 상기 메모리 추상화 유닛 내 존 허가 로직을 더 포함하는, 장치.
  5. 청구항 1에 있어서, 상기 매핑 로직은:
    상기 하나 이상의 클라이언트 중 할당 요청 클라이언트로부터 할당 요청을 수락하고;
    상기 하나 이상의 메모리 디바이스 중 하나의 메모리 디바이스에서 이용 가능한 보호 존을 결정하고;
    상기 할당 요청 클라이언트에 상기 이용 가능한 보호 존을 할당하며; 그리고
    상기 할당 요청 클라이언트에게 할당된 상기 보호 존의 위치를 보고하기 위해 더 구성되는, 장치.
  6. 청구항 5에 있어서, 상기 매핑 로직은:
    상기 할당 요청 클라이언트로부터의 할당 해제 요청을 수락하며; 그리고
    상기 매핑 로직에서 할당된 상기 보호 존을 제거하기 위해 더 구성되는, 장치.
  7. 청구항 5에 있어서, 상기 할당 요청 클라이언트로부터 상기 할당 요청을 수락하는 것은 요청된 크기를 수락하는 것을 포함하고, 상기 이용 가능한 보호 존을 할당하는 것은 상기 요청된 크기로 상기 이용 가능한 보호 존을 할당하는 것을 포함하는, 장치.
  8. 청구항 1에 있어서, 상기 추상화된 메모리 프로토콜 로직은 하이브리드 메모리 큐브 프로토콜을 이용하여 메모리 액세스들을 해석하기 위해 구성되는, 장치.
  9. 청구항 8에 있어서, 상기 보호 존들은 하이브리드 메모리 큐브에서의 보울트들(vaults)로서 구성되는, 장치.
  10. 청구항 1에 있어서, 상기 매핑 로직은 상기 요청 클라이언트로부터의 상기 네이밍을 액세스될 상기 하나 이상의 메모리 디바이스 중 하나의 메모리 디바이스에 대한 상기 네이밍으로 변환하기 위한 어드레스 변환 테이블을 포함하는, 장치.
  11. 청구항 1에 있어서, 상기 매핑 로직은 메모리 내 각 할당된 보호 존의 위치 및 크기를 정의하기 위한 베이스 레지스터 및 경계 레지스터를 포함하는, 장치.
  12. 청구항 1에 있어서, 상기 메모리 액세스 요청은 상기 요청 클라이언트에 대한 클라이언트 ID를 포함하고, 상기 메모리 제어 로직은 상기 클라이언트 ID가 상기 선택된 보호 존에 대한 허가를 가지지 않는 경우 상기 가상의 물리적 어드레스에 액세스하지 못하는, 장치.
  13. 청구항 1에 있어서, 상기 메모리 액세스 요청에 의해 정의되는 상기 어드레스는 존 ID 및 상기 선택된 보호 존 내 어드레스를 포함하고, 상기 매핑 로직은 상기 존 ID에 응답하여 상기 가상의 물리적 어드레스의 적어도 부분을 생성하는, 장치.
  14. 시스템으로서,
    하나 이상의 추상화된 메모리 모듈을 포함하며, 각 추상화된 메모리 모듈은:
    하나 이상의 메모리 디바이스; 및
    추상화된 메모리 프로토콜 로직으로서: 하나 이상의 클라이언트로부터의 메모리 요청들을 해석하고;
    상기 추상화된 메모리 모듈과 연관된 상기 하나 이상의 메모리 디바이스 행인 상기 메모리 요청들을 서비스하며; 그리고
    상기 추상화된 메모리 모듈 행이 아닌 상기 메모리 요청들을 다른 추상화된 메모리 모듈에 전달하기 위한, 상기 추상화된 메모리 프로토콜 로직;
    상기 하나 이상의 클라이언트 중 요청 클라이언트에 의한 메모리 액세스 요청에 의해 정의된 어드레스를 상기 하나 이상의 메모리 디바이스 중 적어도 하나에서 선택된 보호 존의 가상의 물리적 어드레스로 변환하기 위한 매핑 로직;
    및 상기 가상의 물리적 어드레스의 상기 하나 이상의 메모리 디바이스 중 적어도 하나에 액세스하기 위한 메모리 제어 로직을 포함하는, 시스템.
  15. 청구항 14에 있어서, 하나 이상의 추상화된 메모리 모듈의 각각은 모듈 ID를 더 포함하고 메모리 요청들은 하나 이상의 메모리 모듈 중 어느 추상화된 메모리 모듈이 어드레스를 사용할지를 식별하는 모듈 ID를 포함하는, 시스템.
  16. 청구항 14에 있어서, 상기 메모리 액세스 요청에 의해 정의되는 상기 어드레스는 존 ID 및 상기 선택된 보호 존 내 어드레스를 포함하고, 상기 매핑 로직은 상기 존 ID에 응답하여 상기 가상의 물리적 어드레스의 적어도 부분을 생성하는, 시스템.
  17. 청구항 14에 있어서, 상기 하나 이상의 추상화된 메모리 모듈은 하이브리드 메모리 큐브들을 포함하는, 시스템.
  18. 메모리 시스템으로서,
    복수의 물리적 보호 존을 포함하는 물리적 메모리 어드레스 공간을 정의하는 복수의 메모리 디바이스; 및
    하나 이상의 가상 메모리 어드레스 공간을 포함하고, 각 가상 메모리 어드레스 공간은 인접한 가상 어드레스 공간을 형성하기 위해 복수의 가상 보호 존을 포함하고, 각 가상 보호 존은 추상화된 메모리 프로토콜로 통신하고 복수의 물리적 보호 존에 대한 액세스를 제어하도록 구성되는 추상화된 메모리 모듈에 의해 상기 물리적 메모리 어드레스 공간 내 복수의 물리적 보호 존의 대응하는 물리적 보호 존에 매핑되는, 메모리 시스템.
  19. 메모리에 액세스하는 방법으로서,
    추상화된 메모리 프로토콜로 메모리 액세스 요청을 발생시키는 단계;
    추상화된 메모리 모듈에서 상기 메모리 액세스 요청을 수락하는 단계;
    상기 메모리 액세스 요청에 의해 정의된 어드레스를 포함하는 네이밍을 상기 추상화된 메모리 모듈과 연관된 하나 이상의 메모리 디바이스 내 선택된 보호 존의 가상의 물리적 어드레스로 변환하는 단계; 및
    상기 가상의 물리적 어드레스의 상기 하나 이상의 메모리 디바이스에 액세스하는 단계를 포함하는, 방법.
  20. 청구항 19에 있어서, 상기 메모리 액세스 요청이 상기 메모리 액세스 요청을 발생시킨 요청 클라이언트가 상기 선택된 보호 존에 액세스하는 허가를 가질 때 완료되고, 상기 요청 클라이언트가 상기 선택된 보호 존에 액세스하는 허가를 가지지 않을 때 에러를 보고할 수 있게 하는 단계를 더 포함하는, 방법.
  21. 청구항 19에 있어서, 상기 메모리 액세스 요청이 판독 액세스인지 또는 기록 액세스인지에 응답하여 상기 선택된 보호 존에 액세스하는 허가를 승인하는 단계를 더 포함하는, 방법.
  22. 청구항 19에 있어서, 상기 메모리 액세스 요청이 상기 메모리 액세스 요청에 제공된 상기 어드레스가 상기 선택된 보호 존 내에 있을 때 완료되고, 상기 메모리 액세스 요청에 제공된 상기 어드레스가 어떠한 정의된 보호 존들에도 있지 않을 때 에러를 보고할 수 있게 하는 단계를 더 포함하는, 방법.
KR1020167034625A 2014-05-09 2015-05-01 재구성 가능한 메모리 시스템들을 위한 가상화된 물리적 어드레스들 KR101754549B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/274,195 US9501222B2 (en) 2014-05-09 2014-05-09 Protection zones in virtualized physical addresses for reconfigurable memory systems using a memory abstraction
US14/274,195 2014-05-09
PCT/US2015/028882 WO2015171464A1 (en) 2014-05-09 2015-05-01 Virtualized physical addresses for reconfigurable memory systems

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020177017728A Division KR101857937B1 (ko) 2014-05-09 2015-05-01 재구성 가능한 메모리 시스템들을 위한 가상화된 물리적 어드레스들

Publications (2)

Publication Number Publication Date
KR20160145848A KR20160145848A (ko) 2016-12-20
KR101754549B1 true KR101754549B1 (ko) 2017-07-05

Family

ID=54367950

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177017728A KR101857937B1 (ko) 2014-05-09 2015-05-01 재구성 가능한 메모리 시스템들을 위한 가상화된 물리적 어드레스들
KR1020167034625A KR101754549B1 (ko) 2014-05-09 2015-05-01 재구성 가능한 메모리 시스템들을 위한 가상화된 물리적 어드레스들

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020177017728A KR101857937B1 (ko) 2014-05-09 2015-05-01 재구성 가능한 메모리 시스템들을 위한 가상화된 물리적 어드레스들

Country Status (7)

Country Link
US (1) US9501222B2 (ko)
EP (1) EP3140745A4 (ko)
JP (1) JP6201065B2 (ko)
KR (2) KR101857937B1 (ko)
CN (1) CN106462361B (ko)
TW (1) TWI588654B (ko)
WO (1) WO2015171464A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9558143B2 (en) 2014-05-09 2017-01-31 Micron Technology, Inc. Interconnect systems and methods using hybrid memory cube links to send packetized data over different endpoints of a data handling device
US9823846B2 (en) * 2014-08-20 2017-11-21 Qualcomm Incorporated Systems and methods for expanding memory for a system on chip
KR20160093147A (ko) * 2015-01-28 2016-08-08 에스케이하이닉스 주식회사 재구성 가능한 반도체 메모리 장치 및 그 동작 방법
US20180004681A1 (en) * 2016-07-02 2018-01-04 Intel Corporation Systems, Apparatuses, and Methods for Platform Security
JP2019117979A (ja) * 2017-12-26 2019-07-18 ファナック株式会社 制御装置
CN110413201B (zh) * 2018-04-28 2023-06-27 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
US11334253B2 (en) * 2018-12-07 2022-05-17 Intel Corporation Storage system that provides protection levels at stored data item granularity
US11055249B2 (en) * 2019-06-25 2021-07-06 Micron Technology, Inc. Access optimization in aggregated and virtualized solid state drives
US11650746B2 (en) * 2019-09-05 2023-05-16 Micron Technology, Inc. Intelligent write-amplification reduction for data storage devices configured on autonomous vehicles
US20230042551A1 (en) * 2021-08-03 2023-02-09 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for the management of device local memory
CN114185818B (zh) * 2022-02-15 2022-08-02 摩尔线程智能科技(北京)有限责任公司 基于扩展页表的gpu访存自适应优化方法及装置
CN115617274A (zh) * 2022-10-27 2023-01-17 亿铸科技(杭州)有限责任公司 一种具备坏块管理功能的存内计算装置及操作方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040013027A1 (en) 2002-06-06 2004-01-22 Seiko Epson Corporation Non-volatile semiconductor memory device and method of actuating the same
US20110131363A1 (en) 2002-12-27 2011-06-02 Hall Clifford D Mechanism for remapping post virtual machine memory pages

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4481573A (en) 1980-11-17 1984-11-06 Hitachi, Ltd. Shared virtual address translation unit for a multiprocessor system
US4528624A (en) 1981-03-25 1985-07-09 International Business Machines Corporation Method and apparatus for allocating memory space based upon free space in diverse memory devices
JPS62219046A (ja) * 1986-03-19 1987-09-26 Fujitsu Ltd 記憶保護方式
JPH0644140A (ja) * 1992-07-27 1994-02-18 Kobe Nippon Denki Software Kk メモリの割り当て方式
US5561622A (en) 1993-09-13 1996-10-01 International Business Machines Corporation Integrated memory cube structure
US5541914A (en) 1994-01-19 1996-07-30 Krishnamoorthy; Ashok V. Packet-switched self-routing multistage interconnection network having contention-free fanout, low-loss routing, and fanin buffering to efficiently realize arbitrarily low packet loss
US5448511A (en) 1994-06-01 1995-09-05 Storage Technology Corporation Memory stack with an integrated interconnect and mounting structure
US6496847B1 (en) 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6763328B1 (en) 2000-06-15 2004-07-13 Bull Hn Information Systems Inc. Method and data processing system for emulating virtual memory utilizing threads
US7239641B1 (en) 2001-04-24 2007-07-03 Brocade Communications Systems, Inc. Quality of service using virtual channel translation
US6871294B2 (en) 2001-09-25 2005-03-22 Sun Microsystems, Inc. Dynamically reconfigurable interconnection
KR100448709B1 (ko) 2001-11-29 2004-09-13 삼성전자주식회사 데이터 버스 시스템 및 그 제어방법
US7296139B1 (en) 2004-01-30 2007-11-13 Nvidia Corporation In-memory table structure for virtual address translation system with translation units of variable range size
US7475174B2 (en) * 2004-03-17 2009-01-06 Super Talent Electronics, Inc. Flash / phase-change memory in multi-ring topology using serial-link packet interface
US7120723B2 (en) 2004-03-25 2006-10-10 Micron Technology, Inc. System and method for memory hub-based expansion bus
DE102004062287A1 (de) * 2004-12-23 2006-07-13 Fujitsu Siemens Computers Gmbh Verfahren zur Aktualisierung von Einträgen von Adressumsetzpuffern in einem Mehrprozessor-Computersystem
US20060153185A1 (en) 2004-12-28 2006-07-13 Intel Corporation Method and apparatus for dynamically changing ring size in network processing
US8645665B1 (en) 2012-12-14 2014-02-04 Intel Corporation Virtualizing physical memory in a virtual machine system utilizing multilevel translation table base registers to map guest virtual addresses to guest physical addresses then to host physical addresses
US7886126B2 (en) 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7565496B2 (en) 2005-01-22 2009-07-21 Cisco Technology, Inc. Sharing memory among multiple information channels
US7383374B2 (en) 2005-03-31 2008-06-03 Intel Corporation Method and apparatus for managing virtual addresses
JP4591163B2 (ja) * 2005-04-07 2010-12-01 パナソニック株式会社 バスアクセス制御装置
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US8006000B2 (en) * 2006-04-06 2011-08-23 Sony Corporation Bridge, processor unit, information processing apparatus, and access control method
US20080010417A1 (en) * 2006-04-28 2008-01-10 Zeffer Hakan E Read/Write Permission Bit Support for Efficient Hardware to Software Handover
US7752417B2 (en) * 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
US8392565B2 (en) * 2006-07-20 2013-03-05 Oracle America, Inc. Network memory pools for packet destinations and virtual machines
JP4755050B2 (ja) 2006-08-18 2011-08-24 富士通株式会社 データ処理装置、モード管理装置、及びモード管理方法
US7818489B2 (en) 2006-11-04 2010-10-19 Virident Systems Inc. Integrating data from symmetric and asymmetric memory
US20080155224A1 (en) * 2006-12-21 2008-06-26 Unisys Corporation System and method for performing input/output operations on a data processing platform that supports multiple memory page sizes
US20080201588A1 (en) * 2007-02-16 2008-08-21 Mosaid Technologies Incorporated Semiconductor device and method for reducing power consumption in a system having interconnected devices
US8661181B2 (en) 2007-06-28 2014-02-25 Memory Technologies Llc Memory protection unit in a virtual processing environment
JP5101195B2 (ja) * 2007-07-09 2012-12-19 株式会社東芝 インタフェースコントローラ
US8787060B2 (en) 2010-11-03 2014-07-22 Netlist, Inc. Method and apparatus for optimizing driver load in a memory package
US7743375B2 (en) 2008-06-27 2010-06-22 International Business Machines Corporation Information handling system including dynamically merged physical partitions
US8195916B2 (en) * 2009-03-04 2012-06-05 Qualcomm Incorporated Apparatus and method to translate virtual addresses to physical addresses in a base plus offset addressing mode
US9733962B2 (en) 2009-07-23 2017-08-15 Brocade Communications Systems, Inc. Method and apparatus for determining the identity of a virtual machine
US8739177B2 (en) * 2010-06-21 2014-05-27 Intel Corporation Method for network interface sharing among multiple virtual machines
US20140108701A1 (en) * 2010-07-16 2014-04-17 Memory Technologies Llc Memory protection unit in a virtual processing environment
US8874808B2 (en) * 2010-09-07 2014-10-28 International Business Machines Corporation Hierarchical buffer system enabling precise data delivery through an asynchronous boundary
US8930714B2 (en) 2011-07-19 2015-01-06 Elwha Llc Encrypted memory
US9098209B2 (en) 2011-08-24 2015-08-04 Rambus Inc. Communication via a memory interface
JP5803502B2 (ja) * 2011-09-27 2015-11-04 富士通株式会社 監視装置、制御方法及び制御プログラム
US8687421B2 (en) * 2011-11-21 2014-04-01 Sandisk Technologies Inc. Scrub techniques for use with dynamic read
US9152570B2 (en) * 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
US9529724B2 (en) 2012-07-06 2016-12-27 Seagate Technology Llc Layered architecture for hybrid controller
US9348385B2 (en) 2012-07-09 2016-05-24 L. Pierre deRochement Hybrid computing module
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
JP5987560B2 (ja) * 2012-08-31 2016-09-07 富士通株式会社 データ転送装置、データ転送方法およびデータ転送プログラム
US20140379846A1 (en) * 2013-06-20 2014-12-25 Nvidia Corporation Technique for coordinating memory access requests from clients in a mobile device
US9319349B2 (en) * 2013-06-20 2016-04-19 Micron Technology, Inc. Encapsulation enabled PCIE virtualisation
US20150106547A1 (en) * 2013-10-14 2015-04-16 Micron Technology, Inc. Distributed memory systems and methods

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040013027A1 (en) 2002-06-06 2004-01-22 Seiko Epson Corporation Non-volatile semiconductor memory device and method of actuating the same
US20110131363A1 (en) 2002-12-27 2011-06-02 Hall Clifford D Mechanism for remapping post virtual machine memory pages

Also Published As

Publication number Publication date
US9501222B2 (en) 2016-11-22
KR20160145848A (ko) 2016-12-20
KR20170076821A (ko) 2017-07-04
JP2017515238A (ja) 2017-06-08
KR101857937B1 (ko) 2018-05-14
EP3140745A4 (en) 2018-01-31
US20150324285A1 (en) 2015-11-12
JP6201065B2 (ja) 2017-09-20
CN106462361A (zh) 2017-02-22
TW201606508A (zh) 2016-02-16
WO2015171464A1 (en) 2015-11-12
EP3140745A1 (en) 2017-03-15
TWI588654B (zh) 2017-06-21
CN106462361B (zh) 2018-06-08

Similar Documents

Publication Publication Date Title
KR101754549B1 (ko) 재구성 가능한 메모리 시스템들을 위한 가상화된 물리적 어드레스들
US20230412365A1 (en) Technologies for managing a flexible host interface of a network interface controller
US11467885B2 (en) Technologies for managing a latency-efficient pipeline through a network interface controller
TWI584116B (zh) 使用混合記憶體立方體連結之互連系統及方法
EP3706394B1 (en) Writes to multiple memory destinations
US9990140B2 (en) Methods of providing access to I/O devices
CN108351829B (zh) 用于输入/输出计算资源控制的系统和方法
JP5469081B2 (ja) 制御パス入出力仮想化方法
US9219696B2 (en) Increased efficiency of data payloads to data arrays accessed through registers in a distributed virtual bridge
WO2022086730A1 (en) Asynchronous pipeline merging using long vector arbitration
JP2016139256A (ja) 入出力制御装置、入出力制御システム、入出力制御方法、および、プログラム
US11698791B2 (en) On-demand programmable atomic kernel loading
KR101690568B1 (ko) 네트워크 온 칩 소켓 프로토콜
US20240012684A1 (en) Memory disaggregation method, computing system implementing the method
US20230315345A1 (en) Storage device and protocol conversion method by storage device

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent