KR101175906B1 - 메모리 맵핑 방법과 컴퓨팅 장치 및 이의 제조물품 - Google Patents

메모리 맵핑 방법과 컴퓨팅 장치 및 이의 제조물품 Download PDF

Info

Publication number
KR101175906B1
KR101175906B1 KR1020100132795A KR20100132795A KR101175906B1 KR 101175906 B1 KR101175906 B1 KR 101175906B1 KR 1020100132795 A KR1020100132795 A KR 1020100132795A KR 20100132795 A KR20100132795 A KR 20100132795A KR 101175906 B1 KR101175906 B1 KR 101175906B1
Authority
KR
South Korea
Prior art keywords
memory
mapping
data
performance
runtime
Prior art date
Application number
KR1020100132795A
Other languages
English (en)
Other versions
KR20110073366A (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 KR20110073366A publication Critical patent/KR20110073366A/ko
Application granted granted Critical
Publication of KR101175906B1 publication Critical patent/KR101175906B1/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/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Memory System (AREA)

Abstract

시스템은 컴퓨팅 시스템의 런타임시에 메모리 맵핑을 모니터링하고 동적으로 변경시킨다. 컴퓨팅 시스템은 메모리 자원, 그리고 데이터를 메모리 자원에 저장하여 후속하여 액세스하는 방법을 나타내는 다수의 가능한 맵핑을 가진다. 각 메모리 맵핑의 성능은 컴퓨팅 장치의 상이한 런타임 또는 로드 조건 하에서 다를 수 있다. 메모리 제어기는 현 메모리 맵핑의 런타임 성능을 모니터링할 수 있고, 모니터링 또는 관찰된 메모리 맵핑의 성능을 기반으로 런타임시에 메모리 맵핑을 동적으로 변경할 수 있다. 성능 모니터링은 바이트 레벨로부터 메모리 채널로, 시스템 내에서 가능한 다수의 상이한 입도 중 임의 입도에 대해 변경될 수 있다.

Description

메모리 맵핑 방법과 컴퓨팅 장치 및 이의 제조물품{ADAPTIVE ADDRESS MAPPING WITH DYNAMIC RUNTIME MEMORY MAPPING SELECTION}
본 발명의 실시예는 일반적으로 메모리 관리에 관한 것으로, 특히 동적 메모리 맵핑(dynamic memory mapping)에 관한 것이다.
저작권 공고/승인
본 특허 문서의 개시 부분은 저작권 보호를 받는 자료들을 포함할 수 있다. 저작권 소유자는 타인이 특허청 특허파일 또는 기록에 보여지는 대로 특허 문서 또는 특허 개시물을 재생산하는 것에 반대하지 않지만, 모든 저작권 권리를 보유한다. 저작권 공고는 후술되는 바와 같은 모든 데이터, 그리고 본 명세서에 첨부된 도면에 적용될 뿐만 아니라 후술되는 임의 소프트웨어에도 적용된다(Copyrightⓒ 2009, Intel Coporation, All Right Reserved).
컴퓨팅 시스템이 계속 발전함에 따라, 컴퓨팅 시스템에 임시 또는 휘발성 데이터와 인스트럭션을 저장하기 위한 시스템 내 사용가능한 메모리 자원의 양이 꾸준히 증가해왔다. 모든 면에 있어서, 이와 같은 경향은 계속될 것이며 메모리 아키텍쳐(memory architectures)가 계속해서 더욱더 많은 병렬 자원을 메모리 제어기에 보일 것으로 보인다. 병렬 자원은 다수의 채널, 뱅크 그룹, 페이지 및 컬럼과 같은 구조를 포함할 수 있다. 메모리 제어기는 메모리 아키텍쳐의 구조에 액세스하는 방법을 제어한다.
메모리 아키텍쳐의 구조에 대한 액세스는 물리적 메모리 주소를 메모리 자원으로 맵핑하는 메모리 맵핑에 의해 제어된다. 상이한 메모리 맵핑은 상이한 레이턴시(latency), 처리량 및 전력 패널티를 의미한다. 현 컴퓨팅 시스템은 상이한 방식으로 메모리 자원에 대한 액세스를 제어하는 기능을 하는 다수의 가능한 맵핑 방안(mapping scheme)을 가질 수 있다. 현재의 맵핑 방안은 시동 또는 재부팅시에 선택되어 컴퓨팅 시스템의 런타임(runtime) 동안에 고정되는 정적 맵핑 테이블을 사용한다. 정적 맵핑 테이블을 사용하면 융통성이 없을 수 있으며, 런타임시에만 드러날 수 있는 상이한 로드 조건을 고려할 수 없다.
도 1은 런타임시에 상이한 메모리 맵핑들 중에 동적으로 선택하는 시스템 실시예의 블록도.
도 2는 런타임시에 상이한 메모리 맵핑을 동적으로 선택시에 한 맵핑으로부터 다른 맵핑으로의 전환을 도시하는 시스템 실시예의 블록도.
도 3은 시스템의 런타임시에 메모리 맵핑을 동적으로 변경하는 실시예의 흐름도.
도 4는 런타임시에 상이한 메모리 맵핑들 중에 동적으로 선택하는 메모리 제어기를 가진 하드웨어 플랫폼 실시예의 블록도.
다음 설명은 본 발명 실시예의 구현에 대한 예측시 보이는 도면에 대한 논의를 포함한다. 도면을 제한이 아닌 예로서 이해해야 한다. 본 명세서에 사용되는 바와 같이, 하나 이상의 "실시예"에 대한 참조는 본 발명의 적어도 일 구현시에 포함되는 특정 특징, 구조 또는 특성을 기술하는 것으로 이해되어야 한다. 따라서 본 명세서에 나타나는 "일 실시예에서" 또는 "다른 실시예에서"와 같은 구절은 본 발명의 다양한 실시예 및 구현을 기술하며, 반드시 모두가 동일 실시예를 참조할 필요는 없다. 그러나 상호 배타적일 필요도 없다.
후술되는 일부 또는 모든 실시예를 도시할 수 있는 도면의 설명을 포함할 뿐만 아니라 본 명세서에 제공된 발명 개념의 구현 또는 다른 잠재적 실시예를 거론하는 소정 상세사항 및 구현의 설명이 이어진다. 본 발명의 실시예 개요를 후술할 것이며, 이에 이어 도면을 참조하여 보다 상세한 설명을 할 것이다.
본 명세서에 기술한 바와 같이, 시스템은 적응형(adaptive) 메모리 맵핑 선택을 허용한다. 메모리 자원으로 물리적 주소 공간의 맵핑을 적응시킴으로써, 레이턴시, 처리량 및/또는 에너지 효율성과 같은 성능을 개선하여 액세스 패널티를 융통성있게 제어할 수 있다. 소정 시간의 컴퓨팅 시스템의 사용 및 설계 목적은 컴퓨팅 시스템에 사용되고 있는 애플리케이션에 의해 설정되는 현재의 워크로드(workload)에 따라 많이 변할 수 있다. 시스템의 설계 목적 및 사용에 기초하여 현 작업 조건을 위해 런타임 동안에 어드레스 맵핑을 적응시킨다.
따라서 컴퓨팅 시스템의 메모리 제어기는 런타임 동안에 메모리 맵핑을 모니터링하고 동적으로 변경시킨다. 제어기는 시스템 성능을 모니터링하고, 일정 정책에 성능을 매칭시키기 위하여 가능한 다수의 맵핑들 중에 선택한다. 성능 모니터링은 바이트 레벨로부터 메모리 채널까지, 시스템 내에서 가능한 다수의 상이한 입도(granularities)중 임의 입도를 위해 변경될 수 있다.
도 1은 런타임시에 상이한 메모리 맵핑들 중에 동적으로 선택하는 시스템 실시예의 블록도이다. 컴퓨팅 장치(102)는 프로세서에 의한 실행을 위해 인스트럭션과 데이터를 제공하도록 운용 메모리를 포함하는 임의 유형의 컴퓨팅 시스템을 나타낸다. 컴퓨팅 장치의 예는 데스크탑 또는 랩탑 컴퓨터, 넷북, 서버, 핸드헬드 장치, 또는 임의 기록 및 판독이 가능한 메모리를 제공하는 다른 장치를 포함할 수 있다.
컴퓨팅 장치(102)는 메모리 액세스를 수행할 수 있는 임의 유형의 애플리케이션, 에이전트 또는 시스템 소프트웨어 구성요소를 나타내는 클라이언트(104)를 포함한다. 예를 들면, 클라이언트(104)는 컴퓨팅 장치(102)의 프로세서, 운영 시스템의 임의 구성요소, 드라이버, 또는 다른 소프트웨어 상에서 실행되는 최종 사용자 애플리케이션일 수 있다. 클라이언트(104)는 액세스하기 위한 메모리 항목의 주소(예를 들면 변수, 코드)를 명시하는 액세스 요청(106)을 한다. 액세스 요청(106)의 주소는 가상 주소 또는 물리적 주소일 수 있다는 것을 알 것이다. 가상 주소는 물리적 주소로 변환된다. 결국, 액세스 요청(106)의 대상인 메모리 항목이 물리적 주소(116)와 관련된다.
액세스 요청(106)이 MC(memory controller)(108)로 송신된다. MC(108)는 컴퓨팅 장치(102)의 메모리(150)에 대한 메모리 액세스를 제어하기 위해 하드웨어 및 펌웨어(코드)를 포함한다. 일 실시예에서, MC(108)는 매퍼(mapper)(110)를 포함하는데, 이 매퍼(110)는 메모리(150)의 자원을 분리시키기 위하여 물리적 주소(116)를 맵핑하는 MC(108)의 기능을 나타내기 위한 추상화이다. 맵(118)은 물리적 주소(116)를 메모리(150)의 메모리 자원(152-154)으로 맵핑하는 것을 나타낸다. 맵핑은 메모리(150)의 하드웨어에서 실제 위치와 물리적 메모리 주소 간의 관계 대응(correspondence)를 언급한다는 것을 알 것이다. 대응은 현재 선택된 맵핑에 따라 상이할 수 있다.
맵 테이블(112-114)은 메모리(150)에서 관계를 나타내는 물리적 주소(116)와 맵(118) 간의 맵핑을 결정한다. 맵 테이블(112-114)은 액세스 요청(106)이 메모리(150)에 대한 액세스에 의해 서비스될 수 있는 메모리 맵핑을 제공하는데 사용되는 임의 메카니즘을 나타낸다. 맵 "테이블"은 주소를 맵핑할 수 있는 방법에 대한 가능한 예로서 이해될 것이다. 테이블은 통상 적어도 하나의 대응 데이터 요소를 가진 키로써 엔트리를 판독함으로써 사용된다. 맵 테이블(112-114)의 경우, 키는 물리적 주소(116), 대응 필드 또는 값 또는 데이터 요소는 맵(118)(또는 메모리(150)에서 위치를 액세스하기 위한 값)이다. 맵(118)은 예를 들면 실제 물리적 주소와 오프셋을 포함할 수 있다.
메모리(150)는 컴퓨팅 장치(102)를 위한 운용 데이터 및 인스트럭션을 저장한다. 운용 데이터 및 인스트럭션은 (예를 들면 운영 시스템(OS) 및/또는 애플리케이션을 위한) 실행을 위한 임의 코드, 코드 실행을 위해 액세스 또는 참조할 고정 값의 요소 또는 데이터, 코드 실행시에 사용되는 임시 값의 요소 또는 변수, 또는 컴퓨팅 장치(102)의 런타임 실행시에 사용되는 임의 다른 항목을 포함한다. 본 명세서에 사용되는 바와 같이, 컴퓨팅 장치(102)의 런타임 실행 또는 간단히 "런타임"은 컴퓨팅 장치상의 실행 세션 또는 순간을 언급한다. 런타임은 부트업과 리셋, 재부팅 또는 셧다운 사이의 시스템 상태와 운영 시스템의 환경을 언급한다. 따라서 런타임은 컴퓨팅 장치(102)의 부팅들 간에 계속되는 실행 세션 또는 실행 상태이다.
메모리 자원(152-154)은 메모리(150)의 물리적 및/또는 논리적 임의 분리일 수 있다. 각 메모리 자원(152-154)에 의해 표현되는 실제 구조는 구현에 의존한다는 것을 알 것이다. 일 실시예에서, 구조는 메모리 액세스 정책의 변경과 함께 동적으로 변경될 수 있다. 메모리 자원(152-154)은 각각 메모리 채널, 메모리 뱅크, 메모리 뱅크 그룹, 메모리 페이지, 메모리 컬럼, 또는 논리적 메모리 섹션이거나, 또는 이를 포함할 수 있다. 모든 자원은 메모리에서 데이터를 저장 및 액세스하는 일을 하는 모든 자원이 포함된다.
메모리 채널은 일 메모리 카드 또는 개별 메모리 카드상의 칩 또는 IC(integrated circuits)와 같은 상이한 물리적 메모리 장치를 언급할 수 있다. 메모리 뱅크는 특정 장치로 제한되거나, 또는 제한되지 않을 수도 있는 메모리 위치 그룹화를 언급한다. 메모리 뱅크 그룹은 메모리 뱅크 그룹, 또는 메모리 위치 그룹의 그룹화를 언급하다. 메모리 페이지는 한번에 액세스될 수 있는 특정 또는 정의된 양의 메모리를 언급하고, 그리고 각 컴퓨팅 시스템 구현에 따라 다를 수 있다. 메모리 컬럼은 스택된 메모리 구성에서 메모리 위치의 수직 그룹화를 언급할 수 있다. 소정 용어는 특정 메모리 기술을 특히 참조하는 것으로 이해될 수 있지만 (예를 들면 DRAM(dynamic random access memory)), 본 명세서에 기술된 원리는 임의 메모리 기술에도 적용가능하다는 것을 알 것이다. 따라서 상이한 유형의 RAM(random access memory) 또는 임의 판독 및 기록 능력을 허용하는 다른 메모리가 사용될 수 있다.
MC(108)는 성능 통계(120)를 포함한다. 본 명세서에 사용되는 바와 같이, "성능"은 메모리(150)에 대한 액세스 동작의 임의 측정을 언급한다. 따라서 성능은 메모리 자원의 사용과 전력 효율성뿐만 아니라 레이턴시 및/또는 처리량에 의해 측정되는 속도를 포함할 수 있다. 성능 통계(120)는 메모리 액세스의 동작 양상을 나타내는 임의 통계 또는 측정 또는 모니터링된 값을 포함한다. 메모리 액세스는 메모리로부터/로 판독 및/또는 기록하는 것을 포함하는 것을 알 것이다.
성능 통계(120)는 컴퓨팅 장치(102)의 런타임 동안에 수집되고, 메모리(150)에 대한 액세스 방법을 나타내는 데이터를 제공한다. 성능 통계(120)는 상이한 복잡도의 모니터링 작업을 수행할 수 있는 통계 모듈에 의해 수집될 수 있다. 일 실시예에서, 모니터링은 특정 메모리 자원에 대한 액세스 수와 같이 간단한 카운팅 이벤트를 포함한다. 일 실시예에서, 모니터링은 특정 메모리 자원에 대한 연속된 판독의 수 및/또는 사용되는 주소 범위와 같이 보다 복잡한 통계를 포함한다.
현재 선택된 맵 테이블(도 1에서는 맵 테이블(112)이 선택되는 반면에 (114)와 같은 다른 맵 테이블은 선택되지 않음)이 선택된 정책에 의해 바람직한 성능을 제공하는지의 여부를 결정하기 위하여, 맵핑 정책 모듈(130)은 성능 통계(120)를 처리 또는 평가한다. 일 실시예에서, 정책 모듈(130)은 성능의 임계에 비해 선택된 맵 테이블의 성능을 비교한다(예를 들면 메모리 자원에 대한 액세스의 임계치(하이 또는 로우)에 대한 특정 메모리 자원에 대한 다수의 액세스를 비교). 따라서 정책 모듈(130)은 속도, 자원 사용 및/또는 전력 효율성이라는 점에서 선택된 정책에 대하여 메모리 액세스와 관련해 시스템 성능을 모니터링 및 평가한다.
액세스 정책의 경우, 일반 액세스 방안이 하나 이상의 메모리 자원으로 데이터를 로컬화(localizing)시키는 것을 포함할 수 있다는 것을 알 것이다. 데이터 로컬화는 전력 보존을 개선하고 또한 레이턴시를 개선할 수 있다. 다른 일반적 액세스 방안은 메모리 자원들 간에 데이터를 인터리빙(interleaving)하는 것을 포함한다. 인터리빙은 일반적으로 로컬화보다 더 많은 메모리 자원에 대한 액세스를 포함한다. 또한 알려진 액세스 기법은 최근에 액세스한 메모리 자원에 대한 액세스를 최대화하려고 하는 소위 "개방 페이지 모드(open page mode)", 그리고 낮은 로컬성을 취하는 "폐쇄 페이지 모드(closed page mode)"를 포함한다. 다른 기법이 또한 사용될 수 있다. 상이한 맵 테이블(112-114)은 상이한 정책 또는 액세스 기법을 구현할 수 있다. 따라서 상이한 맵 테이블들 간의 변경 또는 전환은 액세스 레이턴시를 개선하거나, 처리량을 개선하거나, 전력 보존을 개선하거나, 또는 이들의 임의 조합과 관련된 임의 목적을 위해 사용될 수 있는, 데이터 로컬화와 데이터 인터리빙 간의 변경 또는 전환을 포함할 수 있다.
MC(108)는 매퍼(110)의 맵 테이블이 변경될 때에 메모리(150)의 다양한 메모리 자원들 간에 데이터를 재맵핑하도록 기능하는 재맵핑 모듈(140)을 포함한다. 특정 물리적 주소는 메모리(150)의 특정 위치에만 대응하는 것이 아니라 위치에 기록 또는 저장되는 데이터에도 대응한다. 따라서 상이한 데이터 맵이 사용될 때, 데이터는 요청(106)의 물리적 주소에 대응하지 않을 수 있다. 재맵핑 모듈(140)이 데이터를 상이한 위치로 이동시키고, 새 메모리 맵의 메모리 액세스 정책에 대응하도록 메모리(150)의 상이한 위치 및 메모리 자원으로 이동시킨다(예를 들면 판독 및 재기록). 일 실시예에서, 재맵핑 모듈(140)은 데이터 액세스가 클라이언트 요청에 응답하여 수행되지 않을 때에 유휴 사이클 또는 시간 동안에 실행되는 배경 프로세스로서 작동한다. 일 실시예에서, 재맵핑 모듈(140)은 필요할 때(as-needed basis) 재맵핑하고 적절한 메모리 자원 위치로 새 데이터를 기록하고(그리고 여기에 이미 저장된 데이터를 이동시키고), 그리고 판독을 위해 요청된 데이터를 이동시키는 일을 수행한다. 또한 배경 프로세스 및 필요원리 데이터 재맵핑은 결합될 수 있다.
도 1을 특히 참조하여 소정 상세사항을 기술하였지만, 이 상세사항은 이로 제한되지 않는 예를 제공할 수 있다는 것을 알 것이다. 통상, 메모리 맵핑의 동적 선택을 가능하게 하는 시스템은 메모리 액세스 성능을 모니터링하고 결정된 성능을 기반 또는 이에 응답하여 메모리 맵핑을 선택하는 메모리 제어기를 통해 제공된다.
본 명세서에 기술되는 적응형 주소 맵핑은 최적화 기능에 따라 메모리 액세스 시퀀스의 성능을 최적화할 수 있다. 성능 최적화는 개선된 성능을 얻으려 한다는 것을 언급하며 이전 성능과 관련있다는 것을 알 것이다. 최적화는 절대적 최적 성능을 얻거나, 또는 제한하려는 것으로 이해해서는 안된다. 소정 최적화는 런타임 조건이 변함에 따라 시간에 걸쳐 저하될 수 있는 개선된 성능을 먼저 제공할 수 있다.
일 실시예에서, 본 명세서에 기술된 바와 같은 적응형 동적 메모리 맵핑을 가진 메모리 제어기는 메모리 자원으로의 유효한 물리적 주소 맵핑을 각각 정의하는 다수의 구성가능한 맵 테이블을 포함한다. 일 실시예에서, 각 맵 테이블은 현재 맵 테이블의 관련 주소 맵핑을 기반으로 메모리 자원의 사용과 관계된 성능 통계를 추적하는 "히트(hit)" 테이블과 관련이 있다. 그러면, 메모리 제어기는 런타임 동안에 때에 따라 히트 테이블을 모니터링하고 주소 맵핑을 변경해야하는 시기 및 방법을 결정할 수 있다. 주소 맵핑의 변경 시기 및 방법의 결정은 구성가능한 결정 함수 또는 알고리즘을 기반으로 할 수 있다. 따라서 메모리 맵핑을 변경하려는 판단이 임계 성능을 기반으로 한다면, 이 임계치는 메모리 맵핑의 구성 및 행동에 융통성을 제공하도록 시스템에 구성될 수 있다.
전술한 바와 같이, 현재의 능동 주소 맵핑이 변하는 경우, 영향받은 주소 범위에 대해 데이터를 메모리(예를 들면 DRAM(s))에서 구 위치로부터 새 위치로 이동시켜야 한다. 메모리 맵핑에 대한 변경은 소정 주소 범위 또는 물리적 주소에만 영향을 줄 수 있다는 것을 알 것이다. 새 위치로의 데이터 이동은 점차적으로 수행될 수 있으며, 재맵핑 클라이언트 구성요소 또는 재맵핑 에이전트 구성요소에 의해 수행된다.
재부팅 동안에 재구성될 수 있는 정적 맵핑 테이블을 사용하는 현 시스템과는 대조적으로, 본 명세서에 기술된 적응형 맵핑은 시스템 런타임 동안에만 드러나는 영향을 설명할 수 있다. 예를 들면 다른 애플리케이션 및 I/O(input/output) 서비스로부터 메모리 액세스를 간섭하게 되면 런타임 동안에 드러날 뿐이지만 메모리 액세스 성능에 상당한 영향을 줄 수 있다. 맵핑 정책 모듈은 성능 통계를 기반으로 런타임 동안에 선호하는 주소 맵핑 방안을 모니터링, 분석 및 배운다. 모니터링 및 분석은 애플리케이션 행동, 사용 시나리오 및 설계 목적(예를 들면 성능, 에너지 효율성 및 전력 관리)의 변화에 자동적으로 적응할 수 있게 해준다. 시스템은 주소 맵핑의 변경 동안에 계속 작동하므로, 적응화는 컴퓨팅 시스템의 최종 사용자에게 최소의 영향을 주면서 수행될 수 있다.
일 실시예에서, 맵핑 정책 모듈은 사람인 사용자가 구성 결정을 하기 위해 검토할 수 있는 성능 통계 리포트 또는 로그를 생성한다. 따라서 예를 들면, 시스템 런타임 동안에 그 자체를 보여주는 영향을 특히 더 다루기 위해 또 다른 맵 테이블을 생성할 수 있어, 사용가능한 맵 테이블로 변경함으로써 보다 효과적으로 다룰 수 있었다.
결정할 시에 메모리 액세스 성능을 고려하지 않는 현재 맵핑 구성과 적응형 메모리 맵핑의 동작은 확연히 구별된다는 것을 알 것이다. 또한 적응형 메모리 맵핑은 워크로드 밸런싱(workload balancing)과 웨어아웃 레벨링(wear-out leveling)과 같은 기술과 구별될 수 있다. 워크로드 밸런싱은 다양한 계산 자원으로 작업을 균등화하려 한다. 워크로드 밸런싱은 백로그를 모니터링하고, 이 모니터링을 기반으로 작업(tasks)을 상이한 자원으로 배정함으로써 동작한다. 본 명세서에 기술한 바와 같이, 적응형 메모리 맵핑은 메모리 액세스 성능의 모니터링에 의해 볼 수 있는 바와 같이 메모리 구조에 대한 지식을 사용한다.
웨어아웃 레벨링은 전형적으로 저장소인 자원들 간에 워크로드를 균등화하려한다. 웨어아웃 레벨은 SSD(solid-state disk) 또는 플래시 디스크 사용에 흔하며, 디스크 영역의 사용을 밸런싱하기 위하여 디스크 내에서 데이터를 분명하게 이동시킨다. 웨어아웃 레벨링은 SSD 디스크의 전형적인 수명 동안에만 최적화되는 반면에, 적응형 메모리 맵핑은 세밀한 모니터링 이벤트에 반응하고, 시스템의 각 개별 실행(예를 들면 각 런타임 세션) 동안에 그의 최적화 목표에서 변한다. 또한 디스크상에 활동을 늘리고 직렬화할 수 있는 웨어아웃 레벨링과 대조적으로, 자원의 동시 사용은 적응형 메모리 맵핑에 의해 유용하다(예를 들면 채널 및 뱅크 그룹의 동시적 사용).
도 2는 상이한 메모리 맵핑을 런타임시에 동적으로 선택할 때에 일 맵핑으로부터 다른 맵핑으로 전환을 도시하는 시스템 실시예의 블록도이다. 시스템(200)은 적응형 메모리 맵핑을 사용하는 컴퓨팅 시스템이다. 시스템(200)은 메모리(270)를 액세스하기 위한 요청을 생성하는 애플리케이션 또는 다른 소프트웨어인, 클라이언트(210)를 포함한다. 이 요청은 요청(220)에 의해 표현되는데, 이는 다수 요청 또는 요청 시퀀스가 행해지는 요청 채널로서 이해될 것이다. 각 요청(220)은 메모리 제어기에서 물리적 주소 맵을 가진다. 각 요청은 판독 요청(222) 또는 기록 요청(224)일 수 있다.
시스템(200)은 도 1의 컴퓨팅 장치(102)의 관점의 일 예이지만, 상이한 기능적 양상을 도시한다. 또한 시스템(200)의 관점은 기능적 관점으로부터 동작시 시스템의 스냅샷이다. 특히 시스템(200)은 ("이전" 맵핑으로 지명된) 일 맵핑으로부터 ("현" 맵핑으로 지명된) 또 다른 맵핑으로의 전환의 투시를 도시한다.
시스템(200)은 이전 맵 테이블(232)과 현재 맵 테이블(234)을 포함한다. 이전 맵 테이블(232)과 현재 맵 테이블(234)은 시스템(200)에서 사용가능한 단지 맵 테이블일 수 있거나, 또는 그들은 시스템(200)에서 사용가능한 두 맵 테이블셋일 수 있다. 시스템(200)에서, 이전 맵 테이블(232)이 물리적 주소를 메모리(270)로 맵핑하는데 사용되었다는 것을 알 것이다. 맵핑 정책 모듈(250)이 변경을 해야 한다고 결정했고, 시스템에서 활성 맵 테이블로서 현재 맵 테이블(234)을 활성화시켰다. 맵핑 정책 모듈(250)은 현재 맵 테이블 하에서 메모리 액세스의 성능을 기반으로 맵 테이블을 변경할 때를 결정한다. 일 실시예에서, 맵핑 정책 모듈(250)은 하나 이상의 성능 임계치(예를 들면 최대 평균 레이턴시, 최소 지속된 처리량, 또는 소정 다른 성능 메트릭)를 포함한다. 성능이 성능 임계치 밖에 있을 때, 맵핑 정책 모듈(250)은 시스템(200)으로 하여금 맵 테이블을 스위칭하게 할 수 있다. 일 실시예에서, 시스템은 맵 테이블 스위칭들 간에 시간 주기를 기다리도록 구성된다. 대기 시간 주기는 맵 테이블 스위칭을 일으키도록 도달해야하는 임계치일 수 있다. 당업자라면, 너무 빈번한 스위칭은 성능에 악영향을 미친다는 것을 알 것이다. 스위칭 빈도는 구현 특정적이지만, 통상 현재 맵핑 테이블로부터 성능 이득을 얻기 위해 충분히 멀리 간격을 두어야 한다.
이전 히트 테이블(242)과 현재 히트 테이블(244)은 시스템(200)에서 성능 통계 메카니즘을 나타낸다. 히트 테이블은 통계 모듈 부분일 수 있고, 맵 테이블과 히트 테이블의 상관성을 나타내기 위해 맵 테이블 옆에 도시된다. 통상, 성능 모니터링 메카니즘은 맵 테이블과 관련있다. 맵핑 정책 모듈(250)은 맵 테이블을 스위칭할 때를 결정하기 위해 히트 테이블을 모니터링한다. 일 실시예에서, 히트 테이블(242, 244)은 그들의 관련 맵 테이블에 의한 메모리 자원의 사용을 모니터링하고, 맵핑 정책 모듈(250)로 하여금 그의 결정 함수 또는 알고리즘 구성을 기반으로 메모리 맵핑(예를 들면 맵 테이블)의 스위칭 여부를 결정할 수 있게 한다. 히트 테이블(242, 244)은 메모리 액세스의 런타임 성능을 가리키며, 이는 시스템의 액세스 패턴으로서 언급될 수 있다. 액세스 패턴은 특정 정책 또는 맵핑에 따라 메모리를 액세스시에 전개되는 메모리 액세스 패턴이다.
도면으로부터 알 수 있는 바와 같이, 이전 맵 테이블(232)로부터 현재 맵 테이블(234)로의 스위칭 후에 발생되는 판독 요청(222)은 여전히 이전 맵 테이블(232)로써 서비스될 수 있다. 현재 맵 테이블(234)이 선택된 후에 이전 맵 테이블(232)이더 이상의 현재 활성 맵이 아닐지라도, 이전 맵 테이블(232) 하에서 메모리(270)에 저장된 데이터의 판독은 여전히 이전 맵핑 하에서 판독될 필요가 있을 수 있다. 현재 맵 테이블(234)로의 변경에 의해 영향받지 않는 주소 공간 내, 또는 이미 재맵핑된 주소 공간 내 물리적 주소를 판독하는 경우, 판독 요청(222)은 현재 맵 테이블(234)을 참조함으로써 서비스된다.
기록 요청(234)은 메모리(270)에 미리 저장되지 않은 데이터뿐만 아니라 이미 재맵핑된 데이터의 경우에 현재 맵 테이블(234)을 참조하여 서비스된다. 중복기록되고 재맵핑되지 않는 데이터의 경우, 기록 요청(224)은 메모리(270)로의 기록을 위해 재맵핑 모듈로 향한다. 재맵핑 모듈(260)은 이전 맵 테이블(232)로부터 현재 맵 테이블(234)로의 변경에 응답하여 메모리 자원(272-274)에 저장된 데이터를 재맵핑한다. 일 실시예에서, 재맵핑 모듈(260)은 전용 DMA(direct memory access) 엔진과 유사하게 메모리(270)내 데이터를 자동적으로 이동시킨다.
재맵핑 모듈(260)은 이전 맵핑에 따라 적절히 데이터를 액세스하기 위하여 이전 맵 테이블(232)과 결합되어야 한다. 또한 재맵핑 모듈(260)은 현재 맵핑에 따라서 데이터를 적절히 액세스하기 위하여 현재 맵 테이블(234)에 결합되어야 한다. 시스템(200)에서 수직선은 메모리 액세스의 분리를 도시한다. 이전 맵 테이블(232)은 이전 맵핑에 따라서 메모리 자원(272-274)을 액세스한다. 현재 맵 테이블(234)은 현재 맵핑에 따라서 메모리 자원(272-274)을 액세스한다. 재맵핑 모듈(260)은 모든 데이터가 현재 맵핑으로 맵핑될 때까지 두 맵핑에 따라 메모리 자원(272-274)을 액세스할 수 있다.
도 3은 시스템의 런타임시에 메모리 맵핑을 동적으로 변경시키는 실시예의 흐름도이다. 여기에 도시된 흐름도는 하드웨어, 소프트웨어 또는 이들의 결합일 수 있는 처리 논리부에 의해 수행될 수 있는, 다양한 처리 동작 시퀀스의 예를 제공한다. 특정 시퀀스 또는 순서로 도시되었지만, 달리 명시되지 않으며 동작 순서가 변경될 수 있다. 따라서 도시된 구현은 단지 예로서 이해되어야 하며, 처리는 상이한 순서로 수행될 수 있고, 소정 동작은 병렬로 수행될 수 있다. 또한 본 발명의 다양한 실시예에서 하나 이상의 작업이 생략될 수 있고, 따라서 모든 동작이 구현마다 필요한 것은 아니다. 다른 처리 흐름이 가능하다.
시스템 구성의 일부로서, 관리자는 성능 정책을 정의한다(302). 성능 정책은 레이턴시, 처리량, 전력 사용, 메모리 사용, 또는 다른 성능 표시기와 관련된 매개변수 또는 메트릭을 포함할 수 있다. 일 실시예에서, 성능 정책을 정의하는 것은 일 메모리 맵핑으로부터 다른 메모리 맵핑으로의 전환을 위한 임계치 또는 다른 메카니즘을 정의하는 것을 포함한다. 또한 시스템 구성은 상이한 정책을 위해 액세스 요청의 물리적 메모리 주소를 메모리 자원으로 맵핑하도록 맵핑 테이블을 생성하는 것을 포함할 수 있다(304). 따라서 시스템 내 다수의 맵핑 테이블이 있을 수 있고, 각각은 성능 정책 또는 성능 목표와 관련있다.
시스템 또는 관리자가 컴퓨팅 시스템의 초기 런타임에 대해 초기 맵핑 테이블을 배정한다(306). 일 실시예에서, 초기 맵핑 테이블이 시스템 내에 명시된다. 초기 맵핑 테이블은 디폴트에 의해 개시된 테이블일 수 있다. 시스템 내 메모리 제어기는 바람직한 정책 또는 예상 성능과 비교할 현재 맵핑 테이블에 대한 성능 통계를 얻거나 또는 모니터링한다(308). 예를 들면 메모리 제어기는 통계 모듈을 통해 맵핑 테이블의 성능이 정책 임계치 내인지를 결정한다(310). 이 결정은 컴퓨팅 시스템, 임계치(들) 및 모니터링된 성능 내 액세스 패턴을 기반으로 행해진다.
성능이 임계치 내인 경우(312), 맵핑 테이블로의 변경이 행해지지 않고, 시스템은 현재 맵핑 테이블하에서 액세스 패턴의 성능을 계속 모니터링한다(308). 성능이 임계치 밖인 경우, 메모리 제어기는 시스템의 런타임 동안에 새 맵핑 테이블을 동적으로 배정한다(314). 메모리 제어기의 재맵핑 모듈은 새 맵핑 테이블에 따라서 메모리 자원을 재맵핑한다(316). 그 후, 시스템은 새 맵핑 테이블을 선택해야 하는 경우 또는 때를 결정하기 위하여 새 맵핑 테이블의 성능을 모니터링한다. 시스템에 셋 이상의 새 맵핑 테이블이 있다면, 시스템은 적소에 성능 정책을 가장 근접하게 매칭시키거나, 메모리 액세스를 바람직한 정책과 가장 근접하게 매칭시키기 위해 결정된 맵핑 테이블을 선택할 수 있다.
도 4는 런타임시에 상이한 메모리 맵핑들 중에 동적으로 선택하는 메모리 제어기를 가진 하드웨어 플랫폼 실시예인 블록도를 도시한다. 시스템(400)은 적응형 메모리 맵핑을 수행하는, 여기의 임의 실시예에 따른 컴퓨팅 시스템이다. 시스템(400)은 운영 시스템(OS)(412)과 하나 이상의 애플리케이션(414)을 실행하는 프로세서(410)를 포함한다. OS(412)와 애플리케이션(414)의 실행 환경은 런타임 세션(416)을 구성한다. 따라서 런타임은 OS 및 그의 관련 애플리케이션을 로딩함으로써 생성되는 "세션"이다. 시스템이 리셋 또는 재부팅될 때마다, 새 세션이 생성된다. 중요한 것은, 적응형 메모리 맵핑이 메모리(470)로의 액세스(판독 및/기록)를 위해 시스템 내 적용가능한 메모리 맵핑을 변경하기 위하여 런타임 세션을 변경할 필요가 없다는 것이다.
시스템(400)은 주변 장치를 프로세서(410)로 연결시키는 하드웨어 플랫폼을 제공하는 플랫폼(420)을 포함한다. 주변 장치는 버스 또는 버스 시스템(예를 들면 PCI(peripheral component interconnect), USB(universal serial bus), 또는 다른 것들)을 통해 프로세서(410)와 연결되는 임의 장치이다. 메모리(470)는 프로세서(410)에 의한 실행을 위해 연산 코드 및/또는 데이터를 저장한다. 실행에 앞서 런타임 구성과 함께 변경되어야 하는 저장된 카피(copy)와 반대로, 운용 인스트럭션 및 데이터는 런타임 변수 및 구성과 함께 로딩되는 데이터를 언급하며, 프로세서(410)에 의해 직접 실행될 수 있다. 전형적으로 메모리(470)는 휘발성이며, 이는 시스템(400)의 하드웨어로의 전력이 중단될 경우에 메모리(470) 내 저장된 값이 유효성을 잃는다는 것을 의미한다. 일 실시예에서, 메모리(470)는 실행 동안에 운용 인스트럭션 및 데이터를 저장하는 플래시 메모리 또는 패이즈 변경 메모리와 같이 비휘발성이다. 메모리(470)는 메모리(470) 구조의 내부 아키텍쳐인 메모리 자원(472-474)을 포함한다.
메모리 자원(472-474)은 병렬 자원 또는 동일 유형의 자원일 수 있다. 메모리(470)는 다수의 구조(뱅크, 채널, 뱅크 그룹 또는 다른 구조)중 임의 구조를 포함할 수 있는데, 이들 각각은 상이한 레벨의 아키텍쳐로 간주될 수 있다는 것을 알 것이다. 자원 관리는 특정 레벨상에서 발생되므로, 관리는 병렬 자원상에서 발생된다. 자원은 여전히 다른 레벨상의 구조적 관점으로부터 존재하지만, 관리는 병렬 자원 상에서 발생한다. 일 실시예에서, 액세스 정책은 다수 유형의 메모리 자원에 적용될 수 있다. 예를 들면 메모리 맵은 채널 액세스를 인터리빙하는 것과 같이 메모리 채널들 간에 액세스를 분산시킬 수 있으면서, 또한 채널 내 특정 장치에 대한 액세스를 로컬화시킬 수 있다.
I/O(430)는 다른 시스템이 시스템(400)과 상호작용할 수 있게 하는 인터페이스, 그리고 사람인 사용자와 시스템(400)의 상호작용을 위한 인터페이스를 제공한다. 저장소(440)는 시스템(400)을 위한 비휘발성 저장소를 제공하여, 그의 콘텐츠는 전력이 중단될 때에도 그들의 유효성을 잃지 않는다. 저장소(440)로부터의 항목은 일반적으로 프로세서(410)에 의해 직접 실행되지 않고, 실행을 위해 메모리(470)로 로딩된다. NIC(450)는 시스템(400)이 네트워크를 통해 컴퓨팅 장치와 인터페이스하게 하는 네트워크 인터페이스 회로 또는 네트워크 인터페이스 카드를 나타낸다.
MC(460)는 메모리(470)의 메모리 액세스를 제어 및 모니터링하는 메모리 제어기이다. MC(460)는 동적 메모리 맵핑 선택을 가능하게 하도록 전술한 바와 같은 하나 이상의 구성요소를 포함할 수 있다. 일 실시예에서, MC(460)의 일부 또는 모든 구성요소는 플랫폼(420) 상에 위치한다. 일 실시예에서, MC(460)의 일부 또는 모든 구성요소는 메모리(470)를 구성하는 동일 회로 상에 또는 동일 실리콘 상에 위치한다.
다양한 동작 또는 기능이 여기에 기술된다는 점에서, 그들은 소프트웨어 코드, 인스트럭션, 구성 및/또는 데이터로서 기술 또는 정의될 수 있다. 콘텐츠는 직접 실행가능하거나("객체" 또는 "실행가능한" 형태), 소스 코드 또는 차이 코드("델타" 또는 "패치" 코드)일 수 있다. 여기에 기술된 실시예의 소프트웨어 콘텐츠는 저장된 콘텐츠를 가진 제조물품을 통해, 또는 통신 인터페이스를 통해 데이터를 전송하기 위해 통신 인터페이스를 동작시키는 방법을 통해 제공될 수 있다. 머신 판독가능 저장매체는 머신으로 하여금 기술된 기능 또는 동작을 수행할 수 있게 할 수 있고, 레코딩가능/레코딩불가 매체(예를 들면 ROM(read only memory), RAM(random access memory), 자기디스크 저장매체, 광저장 매체, 플래시 메모리 장치 등)과 같은 머신(예를 들면 컴퓨팅 장치, 전자 시스템 등)에 의해 액세스가능한 형태로 정보를 저장하는 임의 메카니즘을 포함한다. 통신 인터페이스는 버스 인터페이스, 프로세서 버스 인터페이스, 인터넷 연결, 디스크 제어기 등과 같이 또 다른 장치와 통신하기 위하여 하드와이어, 무선, 광학 등의 매체중 임의 매체로 인터페이스하는 임의 메카니즘을 포함한다. 통신 인터페이스는 소프트웨어 콘텐츠를 기술하는 데이터 신호를 제공하기 위하여 통신 인터페이스를 준비하도록 신호를 송신하고, 그리고/또는 구성 매개변수를 제공함으로써 구성될 수 있다. 통신 인터페이스는 이 통신 인터페이스로 송신되는 둘 이상의 커맨드 또는 신호를 통해 액세스될 수 있다.
본 명세서에 기술된 다양한 구성요소는 기술된 동작 또는 기능을 수행하기 위한 수단일 수 있다. 여기에 기술된 각 구성요소는 소프트웨어, 하드웨어, 또는 이들의 결합을 포함한다. 구성요소는 소프트웨어 모듈, 하드웨어 모듈, 특용 하드웨어(예를 들면 애플리케이션 특정적 하드웨어, ASIC(application specific integrated circuits), DSP(digital signal processors) 등), 내장 제어기, 하드와이어 회로 등으로 구현될 수 있다.
본 명세서에 기술된 것 외에도, 본 발명의 범주를 벗어나지 않고서도 본 발명의 개시된 실시예 및 구현에 다양한 변경을 행할 수 있다. 따라서 여기의 도면 및 예는 실례로서 구성되어야 하며 제한하려는 것이 아니다. 본 발명의 범주는 단지 후속되는 특허청구범위를 참조함으로써 판단되어야 한다.

Claims (19)

  1. 메모리 제어기를 사용하여 메모리 맵핑(memory mapping)의 런타임 성능(runtime performance)을 모니터링하는 단계?물리적 메모리 주소를 메모리 자원으로 맵핑하는 상기 메모리 맵핑에 따라 데이터가 상기 메모리 자원에 저장되며, 상기 런타임 성능은 상기 메모리 자원을 포함하는 컴퓨팅 장치의 런타임 세션의 액세스 패턴에 관한 상기 메모리 맵핑의 성능을 나타냄?와,
    상기 모니터링된 런타임 성능이 임계치 내에 있는지를 판단하는 단계와,
    상기 런타임 성능이 상기 임계치 내가 아니라는 판단에 응답하여 상기 런타임 세션에서 상기 메모리 맵핑을 동적으로 변경하는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 메모리 맵핑의 런타임 성능을 모니터링하는 단계는,
    선택된 하나 또는 다수의 맵 테이블의 런타임 성능을 모니터링하는 단계를 포함하고,
    각 맵 테이블은, 상기 메모리 자원으로의 물리적 메모리의 상이한 맵핑을 정의하는
    방법.
  3. 제 1 항에 있어서,
    상기 메모리 자원은 메모리 채널, 메모리 뱅크, 메모리 뱅크 그룹, 메모리 페이지, 메모리 컬럼, 또는 논리적 메모리 섹션 중의 하나 이상을 포함하는
    방법.
  4. 제 1 항에 있어서,
    상기 메모리 맵핑을 변경하는 단계는,
    레이턴시(latency), 처리량, 전력 보존 또는 이들의 조합을 개선하기 위하여 상기 메모리 자원들 사이에 데이터를 인터리빙(interleaving)하는 것과 로컬화(localizing)하는 것 간에 정책을 변경하는 단계를 포함하는
    방법.
  5. 제 1 항에 있어서,
    상기 메모리 맵핑을 변경하는 단계는,
    상기 메모리 자원에 저장된 상기 데이터를 상기 변경된 메모리 맵핑에 따라 재맵핑하는 단계를 더 포함하는
    방법.
  6. 제 5 항에 있어서,
    상기 데이터를 재맵핑하는 단계는,
    상기 메모리 자원에서 비활성 사이클 동안에 실행되는 배경 처리로서 상기 데이터를 재맵핑하는 단계를 포함하는
    방법.
  7. 제 5 항에 있어서,
    상기 데이터를 재맵핑하는 단계는,
    데이터에 대한 액세스 요청에 응답하여 상기 데이터를 재맵핑된 주소로 재맵핑하는 단계를 포함하는
    방법.
  8. 컴퓨팅 장치에 있어서,
    동일 유형의 다수의 메모리 자원을 가진 메모리와,
    상기 메모리 자원에 저장된 데이터에 대한 액세스를 관리하기 위한 메모리 제어기를 포함하고,
    상기 메모리 제어기는,
    상기 메모리 자원으로 물리적 메모리 주소를 맵핑하는 메모리 맵핑?데이터는 상기 메모리 맵핑에 따라 상기 메모리 자원에 저장됨?의 런타임 성능을 모니터링하고,
    상기 모니터링된 런타임 성능?상기 런타임 성능은 상기 컴퓨팅 장치의 런타임 세션의 액세스 패턴에 관하여 상기 메모리 맵핑의 성능을 나타냄?이 임계치 내인지를 판단하고,
    상기 런타임 성능이 상기 임계치 내가 아니라는 판단에 응답하여 상기 런타임 세션에서 상기 메모리 맵핑을 동적으로 변경하는
    컴퓨팅 장치.
  9. 제 8 항에 있어서,
    상기 메모리 맵핑의 런타임 성능을 모니터링하기 위한 메모리 제어기는,
    선택된 하나 또는 다수의 맵 테이블의 상기 런타임 성능을 모니터링하는 것을 포함하고,
    각 맵 테이블은, 상기 메모리 자원으로의 물리적 메모리의 상이한 맵핑을 정의하는
    컴퓨팅 장치.
  10. 제 8 항에 있어서,
    상기 메모리 자원은 메모리 채널, 메모리 뱅크, 메모리 뱅크 그룹, 메모리 페이지, 메모리 컬럼, 또는 논리적 메모리 섹션 중의 하나를 포함하는
    컴퓨팅 장치.
  11. 제 8 항에 있어서,
    상기 메모리 맵핑을 변경하는 메모리 제어기는,
    레이턴시, 처리량, 전력 보존, 또는 이들의 결합을 개선하기 위하여 상기 메모리 자원들 사이에 데이터를 인터리빙하는 것과 로컬화하는 것 간에 정책을 변경하는 것을 포함하는
    컴퓨팅 장치.
  12. 제 8 항에 있어서,
    상기 메모리 맵핑을 변경하는 메모리 제어기는,
    상기 메모리 자원에 저장된 상기 데이터를 상기 변경된 메모리 맵핑에 따라 재맵핑하는 것을 더 포함하는
    컴퓨팅 장치.
  13. 제 12 항에 있어서,
    상기 데이터를 재맵핑하는 메모리 제어기는,
    상기 메모리 자원에서 비활성 사이클 동안에 실행되는 배경 처리로서 상기 데이터를 재맵핑하는 것을 포함하는
    컴퓨팅 장치.
  14. 제 12 항에 있어서,
    상기 데이터를 재맵핑하는 메모리 제어기는,
    데이터에 대한 액세스 요청에 응답하여 상기 데이터를 재맵핑된 주소로 재맵핑하는 것을 포함하는 컴퓨팅 장치.
  15. 저장된 콘텐츠를 가지는 머신(machine) 판독가능 저장매체에 있어서,
    상기 저장된 콘텐츠는 액세스시에 메모리 제어기를 가진 머신으로 하여금 동작을 수행하게 하기 위한 인스트럭션을 제공하고,
    상기 동작은,
    메모리 맵핑의 런타임 성능을 모니터링하는 단계?물리적 메모리 주소를 메모리 자원으로 맵핑하는 상기 메모리 맵핑에 따라서 데이터가 상기 메모리 자원에 저장되고, 상기 런타임 성능은 상기 메모리 자원을 포함한 컴퓨팅 장치의 런타임 세션의 액세스 패턴에 관한 상기 메모리 맵핑의 성능을 나타냄?와,
    상기 모니터링된 런타임 성능이 임계치 내인지를 판단하는 단계와,
    상기 런타임 성능이 상기 임계치 내가 아니라는 판단에 응답하여 상기 런타임 세션에서 상기 메모리 맵핑을 동적으로 변경시키는 단계를 포함하는
    머신 판독가능 저장매체.
  16. 제 15 항에 있어서,
    상기 메모리 맵핑의 런타임 성능을 모니터링하기 위한 인스트럭션을 제공하는 콘텐츠는,
    선택된 하나 또는 다수 맵 테이블의 상기 런타임 성능을 모니터링하기 위한 인스트럭션을 제공하는 콘텐츠를 포함하고,
    각 맵 테이블은, 상기 메모리 자원으로의 물리적 메모리의 상이한 맵핑을 정의하는
    머신 판독가능 저장매체.
  17. 제 15 항에 있어서,
    상기 메모리 자원은 메모리 채널, 메모리 뱅크, 메모리 뱅크 그룹, 메모리 페이지, 메모리 컬럼, 또는 논리적 메모리 섹션 중의 하나를 포함하는
    머신 판독가능 저장매체.
  18. 제 15 항에 있어서,
    상기 메모리 맵핑을 변경하기 위한 인스트럭션을 제공하는 콘텐츠는,
    레이턴시, 처리량, 전력 보존, 또는 이들의 결합을 개선하기 위하여 상기 메모리 자원들 사이에 데이터를 인터리빙하는 것과 로컬화하는 것 간에 정책을 변경하기 위한 인스트럭션을 제공하는 콘텐츠를 포함하는
    머신 판독가능 저장매체.
  19. 제 15 항에 있어서,
    상기 메모리 맵핑을 변경하기 위한 인스트럭션을 제공하는 콘텐츠는,
    상기 메모리 자원에 저장된 상기 데이터를 상기 변경된 메모리 맵핑에 따라재맵핑하기 위한 인스트럭션을 제공하는 콘텐츠를 더 포함하는
    머신 판독가능 저장매체.
KR1020100132795A 2009-12-23 2010-12-22 메모리 맵핑 방법과 컴퓨팅 장치 및 이의 제조물품 KR101175906B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/646,248 2009-12-23
US12/646,248 US8135936B2 (en) 2009-12-23 2009-12-23 Adaptive address mapping with dynamic runtime memory mapping selection

Publications (2)

Publication Number Publication Date
KR20110073366A KR20110073366A (ko) 2011-06-29
KR101175906B1 true KR101175906B1 (ko) 2012-08-21

Family

ID=44152734

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100132795A KR101175906B1 (ko) 2009-12-23 2010-12-22 메모리 맵핑 방법과 컴퓨팅 장치 및 이의 제조물품

Country Status (3)

Country Link
US (1) US8135936B2 (ko)
KR (1) KR101175906B1 (ko)
TW (1) TWI525433B (ko)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080022079A1 (en) * 2006-07-24 2008-01-24 Archer Charles J Executing an allgather operation with an alltoallv operation in a parallel computer
US8161480B2 (en) 2007-05-29 2012-04-17 International Business Machines Corporation Performing an allreduce operation using shared memory
US20090006663A1 (en) * 2007-06-27 2009-01-01 Archer Charles J Direct Memory Access ('DMA') Engine Assisted Local Reduction
US8422402B2 (en) 2008-04-01 2013-04-16 International Business Machines Corporation Broadcasting a message in a parallel computer
US8484440B2 (en) 2008-05-21 2013-07-09 International Business Machines Corporation Performing an allreduce operation on a plurality of compute nodes of a parallel computer
US8281053B2 (en) 2008-07-21 2012-10-02 International Business Machines Corporation Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations
US8266503B2 (en) 2009-03-13 2012-09-11 Fusion-Io Apparatus, system, and method for using multi-level cell storage in a single-level cell mode
US8380915B2 (en) * 2010-01-27 2013-02-19 Fusion-Io, Inc. Apparatus, system, and method for managing solid-state storage media
US8315092B2 (en) 2010-01-27 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
US8661184B2 (en) 2010-01-27 2014-02-25 Fusion-Io, Inc. Managing non-volatile media
US8854882B2 (en) 2010-01-27 2014-10-07 Intelligent Intellectual Property Holdings 2 Llc Configuring storage cells
US9245653B2 (en) 2010-03-15 2016-01-26 Intelligent Intellectual Property Holdings 2 Llc Reduced level cell mode for non-volatile memory
US9189385B2 (en) * 2010-03-22 2015-11-17 Seagate Technology Llc Scalable data structures for control and management of non-volatile storage
US8332460B2 (en) * 2010-04-14 2012-12-11 International Business Machines Corporation Performing a local reduction operation on a parallel computer
US9424087B2 (en) 2010-04-29 2016-08-23 International Business Machines Corporation Optimizing collective operations
US8949577B2 (en) 2010-05-28 2015-02-03 International Business Machines Corporation Performing a deterministic reduction operation in a parallel computer
WO2012033662A2 (en) * 2010-09-10 2012-03-15 Rambus Inc. Memory controller and method for tuned address mapping
US8776081B2 (en) 2010-09-14 2014-07-08 International Business Machines Corporation Send-side matching of data communications messages
US8566841B2 (en) 2010-11-10 2013-10-22 International Business Machines Corporation Processing communications events in parallel active messaging interface by awakening thread from wait state
US10922179B2 (en) 2010-11-29 2021-02-16 Pure Storage, Inc. Post rebuild verification
US10372350B2 (en) * 2010-11-29 2019-08-06 Pure Storage, Inc. Shared ownership of namespace ranges
US11307930B1 (en) 2010-11-29 2022-04-19 Pure Storage, Inc. Optimized selection of participants in distributed data rebuild/verification
US10802763B2 (en) 2010-11-29 2020-10-13 Pure Storage, Inc. Remote storage verification
US8893083B2 (en) 2011-08-09 2014-11-18 International Business Machines Coporation Collective operation protocol selection in a parallel computer
US8667501B2 (en) 2011-08-10 2014-03-04 International Business Machines Corporation Performing a local barrier operation
US8910178B2 (en) 2011-08-10 2014-12-09 International Business Machines Corporation Performing a global barrier operation in a parallel computer
US9417803B2 (en) * 2011-09-20 2016-08-16 Apple Inc. Adaptive mapping of logical addresses to memory devices in solid state drives
US20130097403A1 (en) * 2011-10-18 2013-04-18 Rambus Inc. Address Mapping in Memory Systems
WO2013097105A1 (en) 2011-12-28 2013-07-04 Intel Corporation Efficient dynamic randomizing address remapping for pcm caching to improve endurance and anti-attack
US9405681B2 (en) * 2011-12-28 2016-08-02 Intel Corporation Workload adaptive address mapping
WO2013101050A1 (en) 2011-12-29 2013-07-04 Intel Corporation Multi-level memory with direct access
US9495135B2 (en) 2012-02-09 2016-11-15 International Business Machines Corporation Developing collective operations for a parallel computer
US8706847B2 (en) 2012-02-09 2014-04-22 International Business Machines Corporation Initiating a collective operation in a parallel computer
US10339051B2 (en) 2012-04-30 2019-07-02 Hewlett Packard Enterprise Development Lp Configurable computer memory
US9846641B2 (en) 2012-06-18 2017-12-19 International Business Machines Corporation Variability aware wear leveling
CN103902459B (zh) 2012-12-25 2017-07-28 华为技术有限公司 确定共享虚拟内存页面管理模式的方法和相关设备
US9183057B2 (en) * 2013-01-21 2015-11-10 Micron Technology, Inc. Systems and methods for accessing memory
US10042750B2 (en) 2013-03-15 2018-08-07 Micron Technology, Inc. Apparatuses and methods for adaptive control of memory using an adaptive memory controller with a memory management hypervisor
US9602398B2 (en) 2013-09-15 2017-03-21 Nicira, Inc. Dynamically generating flows with wildcard fields
US9674087B2 (en) 2013-09-15 2017-06-06 Nicira, Inc. Performing a multi-stage lookup to classify packets
US9996467B2 (en) 2013-12-13 2018-06-12 Nicira, Inc. Dynamically adjusting the number of flows allowed in a flow table cache
US9569368B2 (en) 2013-12-13 2017-02-14 Nicira, Inc. Installing and managing flows in a flow table cache
US9396109B2 (en) 2013-12-27 2016-07-19 Qualcomm Incorporated Method and apparatus for DRAM spatial coalescing within a single channel
US10824342B2 (en) 2014-02-28 2020-11-03 Hewlett Packard Enterprise Development Lp Mapping mode shift between mapping modes that provides continuous application access to storage, wherein address range is remapped between said modes during data migration and said address range is also utilized bypass through instructions for direct access
US9569115B2 (en) 2014-03-31 2017-02-14 International Business Machines Corporation Transparent code patching
US9985896B2 (en) 2014-03-31 2018-05-29 Nicira, Inc. Caching of service decisions
US9256546B2 (en) * 2014-03-31 2016-02-09 International Business Machines Corporation Transparent code patching including updating of address translation structures
US11178051B2 (en) 2014-09-30 2021-11-16 Vmware, Inc. Packet key parser for flow-based forwarding elements
US10824362B2 (en) 2015-03-27 2020-11-03 Hewlett Packard Enterprise Development Lp File migration to persistent memory
US10684954B2 (en) 2015-04-02 2020-06-16 Hewlett Packard Enterprise Development Lp Page cache on persistent memory
US10573354B2 (en) * 2016-09-22 2020-02-25 Smart Modular Technologies, Inc. High density memory module system
US10684955B2 (en) * 2017-04-21 2020-06-16 Micron Technology, Inc. Memory devices and methods which may facilitate tensor memory access with memory maps based on memory operations
US11119915B2 (en) 2018-02-08 2021-09-14 Samsung Electronics Co., Ltd. Dynamic memory mapping for neural networks
KR102540964B1 (ko) 2018-02-12 2023-06-07 삼성전자주식회사 입출력 장치의 활용도 및 성능을 조절하는 메모리 컨트롤러, 애플리케이션 프로세서 및 메모리 컨트롤러의 동작
US10956315B2 (en) 2018-07-24 2021-03-23 Micron Technology, Inc. Memory devices and methods which may facilitate tensor memory access
CN109471771B (zh) * 2018-10-19 2022-01-04 许昌许继软件技术有限公司 一种Nucleus系统的动态内存池监测方法及装置
US11042490B2 (en) 2018-11-15 2021-06-22 Micron Technology, Inc. Address obfuscation for memory
US10853293B2 (en) 2019-04-26 2020-12-01 Dell Products L.P. Switch-based inter-device notational data movement system
US11157191B2 (en) 2019-04-26 2021-10-26 Dell Products L.P. Intra-device notational data movement system
US10936219B2 (en) * 2019-04-26 2021-03-02 Dell Products L.P. Controller-based inter-device notational data movement system
US11435944B2 (en) * 2019-07-24 2022-09-06 Micron Technology, Inc. Dynamic memory address write policy translation based on performance needs
US11442631B2 (en) 2019-12-26 2022-09-13 Micron Technology, Inc. Memory operations with consideration for wear leveling
US11568077B2 (en) 2019-12-26 2023-01-31 Micron Technology, Inc. Memory device data security based on content-addressable memory architecture
KR20210092460A (ko) 2020-01-16 2021-07-26 삼성전자주식회사 복수의 어드레스 맵핑 테이블들을 저장하는 메모리 컨트롤러, 시스템 온 칩, 및 전자 장치
JP7168731B1 (ja) 2021-07-19 2022-11-09 Necプラットフォームズ株式会社 メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラム
CN117724992B (zh) * 2024-02-09 2024-05-28 深圳鲲云信息科技有限公司 用于访问存储器的方法和数据存储架构及计算设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983270A (en) 1997-03-11 1999-11-09 Sequel Technology Corporation Method and apparatus for managing internetwork and intranetwork activity
US20100287536A1 (en) 2009-05-07 2010-11-11 International Business Machiness Corporation Profiling application performance according to data structure
US7870363B2 (en) 2007-12-28 2011-01-11 Intel Corporation Methods and arrangements to remap non-volatile storage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983270A (en) 1997-03-11 1999-11-09 Sequel Technology Corporation Method and apparatus for managing internetwork and intranetwork activity
US7870363B2 (en) 2007-12-28 2011-01-11 Intel Corporation Methods and arrangements to remap non-volatile storage
US20100287536A1 (en) 2009-05-07 2010-11-11 International Business Machiness Corporation Profiling application performance according to data structure

Also Published As

Publication number Publication date
TWI525433B (zh) 2016-03-11
KR20110073366A (ko) 2011-06-29
US8135936B2 (en) 2012-03-13
TW201135459A (en) 2011-10-16
US20110153908A1 (en) 2011-06-23

Similar Documents

Publication Publication Date Title
KR101175906B1 (ko) 메모리 맵핑 방법과 컴퓨팅 장치 및 이의 제조물품
US9026767B2 (en) Adaptive address mapping with dynamic runtime memory mapping selection
US9672158B2 (en) Asymmetric memory migration in hybrid main memory
US12066951B2 (en) Page table hooks to memory types
US20180074715A1 (en) Dynamic adaptation of memory page management policy
US7822941B2 (en) Function-based virtual-to-physical address translation
US7827381B2 (en) Hybrid techniques for memory virtualization in a computer system
US11663133B2 (en) Memory tiering using PCIe connected far memory
TWI764265B (zh) 用於將資料連結至記憶體命名空間的記憶體系統
US20070283125A1 (en) Dynamic selection of memory virtualization techniques
KR20220045216A (ko) 유형화된 메모리 액세스에 대한 유형화되지 않은 메모리 액세스의 맵핑
US20070283115A1 (en) Memory protection in a computer system employing memory virtualization
TWI791765B (zh) 用於控制輸入/輸出裝置的利用率與性能的記憶體控制器與應用處理器以及操作記憶體控制器的方法
US11520699B2 (en) Using a common pool of blocks for user data and a system data structure
Min et al. {eZNS}: An elastic zoned namespace for commodity {ZNS}{SSDs}
US10929033B2 (en) Allocating variable media types of memory devices in a memory system
CN102063386B (zh) 一种单载体多目标的缓存系统的缓存管理方法
KR20190116641A (ko) 가상화 시스템을 위한 저장 장치 및 그 동작 방법
US20080162805A1 (en) Method and Apparatus for Using Non-Addressable Memories of a Computer System
Min et al. eZNS: Elastic Zoned Namespace for Enhanced Performance Isolation and Device Utilization
Yan et al. ZUFS: Enhancing Stability and Endurance in Mobile Devices with Integrated Zoned Namespaces in Universal Flash Storage
Waizy et al. SAP HANA in a Hybrid Main Memory Environment
Paik et al. Profiling-based log block replacement scheme in FTL for update-intensive executions

Legal Events

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

Payment date: 20150730

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160727

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee