KR101459866B1 - 온 더 플라이 메모리 컨트롤러 맵핑 - Google Patents

온 더 플라이 메모리 컨트롤러 맵핑 Download PDF

Info

Publication number
KR101459866B1
KR101459866B1 KR1020127029643A KR20127029643A KR101459866B1 KR 101459866 B1 KR101459866 B1 KR 101459866B1 KR 1020127029643 A KR1020127029643 A KR 1020127029643A KR 20127029643 A KR20127029643 A KR 20127029643A KR 101459866 B1 KR101459866 B1 KR 101459866B1
Authority
KR
South Korea
Prior art keywords
memory
banks
active
bank
memory banks
Prior art date
Application number
KR1020127029643A
Other languages
English (en)
Other versions
KR20130010485A (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 KR20130010485A publication Critical patent/KR20130010485A/ko
Application granted granted Critical
Publication of KR101459866B1 publication Critical patent/KR101459866B1/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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1737Details of further file system functions for reducing power consumption or coping with limited storage space, e.g. in mobile devices
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0625Power saving in 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • 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
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Power Sources (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

메모리의 일부분이 활성화 또는 비활성화될 때 메모리를 동적으로 맵핑 및 재맵핑하기 위한 시스템들, 방법들, 및 디바이스들이 제공된다. 실시예에 따르면, 전자 디바이스는 몇몇 메모리 뱅크들, 하나 이상의 프로세서들, 및 메모리 컨트롤러를 포함할 수 있다. 메모리 뱅크들은 하드웨어 메모리 위치들에 데이터를 저장할 수 있고 독립적으로 비활성화될 수 있다. 프로세서들은 물리적 메모리 어드레스들을 이용하여 데이터를 요구할 수 있고, 메모리 컨트롤러는 물리적 어드레스들을 하드웨어 메모리 위치들로 변환할 수 있다. 메모리 컨트롤러는 메모리 뱅크들 중 제1 개수가 활성일 때 제1 메모리 맵핑 함수를 이용할 수 있고, 제2 개수가 활성일 때 제2 메모리 맵핑 함수를 이용할 수 있다. 메모리 뱅크들 중 하나가 비활성화될 때, 메모리 컨트롤러는 오직 비활성화될 메모리 뱅크로부터 메모리 뱅크들 중 활성인 나머지 것에 데이터를 복사할 수 있다.

Description

온 더 플라이 메모리 컨트롤러 맵핑{MEMORY CONTROLLER MAPPING ON-THE-FLY}
관련 출원들에 대한 교차 참조
이 출원은 명칭이 "MEMORY CONTROLLER MAPPING ON-THE-FLY"이고 2010년 4월 13일 출원된 임시 출원 번호 제61/323,753호의 이득을 주장하고, 이것은 본원에 그대로 참고로 포함된다.
본 개시는 일반적으로 메모리 관리 기법들에 관한 것이고, 더욱 구체적으로는, 온 더 플라이 메모리 맵핑(memory mapping on-the-fly)을 위한 기법들에 관한 것이다.
이 섹션은 아래 설명 및/또는 청구되는 본 개시의 다양한 양태와 관련될 수 있는 기술분야의 다양한 양태에 대해 독자에게 소개하고자 의도된다. 이 논의는 본 개시의 다양한 양태들의 더 나은 이해를 용이하게 하기 위해 배경 정보를 독자에게 제공함에 있어서 유용할 것으로 믿는다. 따라서, 이 명세서가 종래 기술의 인정으로서가 아니라, 이에 비추어 읽혀져야 함을 이해해야 한다.
포터블 및 데스크톱 컴퓨터들과 같은 전자 디바이스들은 점점 고성능 그래픽 및 다른 피처들을 위해 더 큰 양의 메모리를 이용한다. 많은 경우에, 메모리의 큰 부분들은 주어진 시간에 유휴 상태에 놓일 수 있는데, 그 이유는 그러한 메모리의 큰 부분들은 고성능 그래픽의 렌더링과 같이 메모리 집약적 동작들 동안에만 사용중일 수 있기 때문이다. 그러나, 유휴 상태인 동안에도, 메모리 및 동반 회로는 전력을 소비할 수 있다.
유휴 메모리 디바이스들의 전력 소비를 줄이기 위해서 다양한 기법들이 개발되었다. 예를 들어, 전자 디바이스의 성능 요구에 따라, 메모리 및/또는 메모리 버스들은 더 낮은 주파수에서 클록킹될 수 있지만, 계속해서 동작 전력을 끌어낼 수 있다. 또한, 특정 기법들은 전력을 보존하기 위해 포터블 전자 디바이스의 하나 이상의 메모리 디바이스들에 대한 전력을 셧다운하는 것(shutting down)을 수반할 수 있지만, 이들 기법들은 온 더 플라이(on-the-fly) 메모리 재맵핑을 제공하지 않고 및/또는 파워 다운된(powered down) 메모리로부터 남아 있는 메모리로 데이터를 비효율적으로 복사할 수 있다. 그 대신에, 이들 기법들은 변환 색인 버퍼(translation lookaside buffer; TLB)들과 같은 비효율적인 메모리 맵핑 구조들을 이용할 수 있고, 및/또는 파워 다운될 부분 이외의 메모리의 다양한 부분들로부터 데이터를 복사하는 것을 수반할 수 있다.
본원에 개시된 특정 실시예들의 요약은 아래 제시된다. 이들 양태들은 단지 이들 특정 실시예들의 간략한 요약을 독자에게 제공하기 위해 제시되며, 이들 양태들은 이 개시의 범위를 제한하고자 의도되지 않는다는 것을 이해해야 한다. 사실상, 이 개시는 아래 제시되지 않을 수 있는 다양한 양태들을 포함할 수 있다.
본 실시예들은 메모리의 일부분이 활성화 또는 비활성화될 때 메모리를 동적으로 맵핑 및 재맵핑하기 위한 시스템들, 방법들, 및 디바이스들과 관련된다. 일 실시예에 따르면, 전자 디바이스는 몇몇 메모리 뱅크들, 하나 이상의 프로세서들, 및 메모리 컨트롤러를 포함할 수 있다. 메모리 뱅크들은 하드웨어 메모리 위치들에 데이터를 저장할 수 있고 독립적으로 비활성화될 수 있다. 프로세서들은 물리적 메모리 어드레스들을 이용하여 데이터를 요구할 수 있고, 메모리 컨트롤러는 물리적 어드레스들을 하드웨어 메모리 위치들로 변환할 수 있다. 메모리 컨트롤러는 메모리 뱅크들 중 제1 개수가 활성일 때 제1 메모리 맵핑 함수를 이용할 수 있고, 제2 개수가 활성일 때 제2 메모리 맵핑 함수를 이용할 수 있다. 메모리 뱅크들 중 하나가 비활성화될 때, 메모리 컨트롤러는 오직 비활성화될 메모리 뱅크로부터 메모리 뱅크들 중 활성인 나머지 것에 데이터를 복사할 수 있다.
위에 언급된 피처들의 다양한 개량들이 본 개시된 실시예들과 관련하여 존재할 수 있다. 부가적인 피처들이 또한 이들 다양한 실시예들에 포함될 수도 있다. 이들 개량들 및 부가적인 피처들은 개별적으로 또는 임의의 결합으로 존재할 수 있다. 예를 들어, 하나 이상의 실시예들과 관련하여 아래 논의된 다양한 피처들은 단독으로 또는 임의의 결합으로 다른 개시된 실시예들 내로 포함될 수 있다. 다시, 위에 제시된 간략한 요약은 오직 청구된 대상에 대한 제한 없이 본 개시의 실시예들의 특정 양태들 및 문맥들을 독자에게 숙지시키고자 의도된다.
이 개시의 다양한 양태들은 도면들을 참조하여 다음의 상세한 설명을 읽으면 더욱 잘 이해될 수 있다.
도 1은 실시예에 따른, 본원에 개시된 기법들을 수행하도록 구성되는 전자 디바이스의 블록도이다.
도 2는 노트북 컴퓨터의 형태로 도 1의 전자 디바이스의 실시예의 투시도이다.
도 3은 실시예에 따른, 도 1의 전자 디바이스에 의해 이용되는 메모리 관리 시스템의 블록도이다.
도 4는 실시예에 따른, 메모리의 3개의 뱅크들에 걸친 동적 메모리 맵핑을 위한 프로세스의 개략도이다.
도 5 및 6은 실시예들에 따른, 메모리 할당도들이다.
도 7은 메모리 뱅크를 파워 업 또는 다운할지를 결정함에 있어서 고려될 수 있는 다양한 팩터들을 나타내는 메모리 관리 팩터 도표이다.
도 8은 도 7의 팩터 도표에 제시된 기준에 기초하여 전력 관리 및 성능 고려사항들을 밸런싱(balancing)하기 위한 방법의 실시예를 설명하는 흐름도이다.
도 9는 실시예에 따른, 메모리의 하나의 뱅크 및 그의 연관된 메모리 버스가 파워 다운될 때 도 3의 메모리 관리 시스템의 블록도이다.
도 10은 메모리의 하나의 뱅크를 파워 다운하기 위한 방법의 실시예를 설명하는 흐름도이다.
도 11은 실시예에 따른, 메모리의 3개의 뱅크로부터 메모리의 2개의 뱅크에 동적 메모리 재맵핑하기 위한 프로세스를 예시하는 개략도이다.
도 12는 도 11의 프로세스를 수행하기 위한 방법의 실시예를 설명하는 흐름도이다.
도 13은 실시예에 따른, 메모리의 2개의 뱅크로부터 메모리의 1개의 뱅크에 동적 메모리 재맵핑하기 위한 프로세스를 예시하는 개략도이다.
도 14는 도 1의 전자 디바이스가 유휴 상태이거나 열적 제약사항들이 고려될 때 전력 관리를 위한 방법의 실시예를 설명하는 흐름도이다.
도 15 및 16은 실시예들에 따른, 메모리의 1개의 뱅크로부터 메모리의 2개의 뱅크에 그리고 메모리의 2개의 뱅크로부터 메모리의 3개의 뱅크에, 각각 동적 메모리 재맵핑하기 위한 프로세스를 예시하는 개략도들이다.
도 17은 성능 및 메모리 고려사항들에 따라 메모리를 파워 업 또는 다운하기 위한 방법의 실시예를 설명하는 흐름도이다.
도 18은 도 3의 메모리 관리 시스템에 의해 맵핑될 캐시 라인 어드레스의 개략도이다.
도 19a-c는 메모리의 다양한 세그먼트들이 1/2 및 1/4로 파워 다운될 때 도 3의 메모리 관리 시스템에 의해 이용되는 캐시 라인 어드레스 재맵핑 방식들의 개략도들이다.
도 20은 도 19a-c에 의해 예시된 방식으로 캐시 라인 어드레스들을 재맵핑하는 것을 포함하는 메모리를 파워 다운하기 위한 방법의 실시예를 설명하는 흐름도이다.
도 21a-e는 메모리의 다양한 세그먼트들이 2/3 및 1/3로 파워 다운될 때 도 3의 메모리 관리 시스템에 의해 이용되는 캐시 라인 어드레스 재맵핑 방식들의 개략도들이다.
도 22a-b는 도 21a-e의 캐시 라인 어드레스 재맵핑 방식들이 2 비트 변화만을 수반하는 것을 예시하는 캐시 라인 어드레스의 개략도들이다.
도 23은 도 21a-e에 의해 예시된 방식으로 캐시 라인 어드레스들을 재맵핑하는 것을 포함하는 메모리를 파워 다운하기 위한 방법의 실시예를 설명하는 흐름도이다.
도 24 및 25는 실시예들에 따른, 2-뱅크 메모리 맵핑으로부터 판독하고 2-뱅크 메모리 맵핑과 3-뱅크 메모리 맵핑에 둘다 기입하기 위한 프로세스를 각각 예시하는 개략도들이다.
하나 이상의 특정 실시예들이 아래에 설명될 것이다. 이들 실시예들의 간결한 설명을 제공하기 위한 노력으로, 실제 구현의 모든 피처들이 명세서에 설명되지는 않는다. 임의의 엔지니어링 또는 디자인 프로젝트에서와 같이 임의의 그러한 실제 구현의 개발에서, 다수의 구현 특정 결정들이 구현마다 변할 수 있는 시스템 관련 및 비즈니스 관련 제약들의 준수와 같은, 개발자들의 특정 목표들을 실현하기 위해 행해져야 한다는 것을 알아야 한다. 또한, 이러한 개발 노력은 복잡하고 시간 소모적이지만, 그럼에도 이 개시의 이득을 갖는 통상의 기술을 갖는 기술자들을 위한 설계, 제조, 및 제작의 일상적인 과제일 수 있다는 것을 알아야 한다.
본 실시예들은 전자 디바이스를 위한 전력 및 메모리 관리와 관련된다. 특히, 본 개시는 온 더 플라이 메모리 맵핑 및 재맵핑하고, 특정 실시예들에서 하나 이상의 메모리 뱅크일 수 있는, 총 메모리의 하나 이상의 부분들을 파워 업 또는 다운하기 위한 기법들을 설명한다. 본원에 이용되는 바와 같이, "파워 다운", "셧다운", 및 "비활성화"라는 용어들은 메모리를 턴 오프(turn off)하는 것, 메모리를 셀프 리프레시 모드(self-refresh mode)에 두는 것, 또는 메모리를 임의의 다른 저전력 소비 모드에 놓는 것과 같은, 임의의 저전력 상태에 메모리를 두는 것을 가리킨다. 특히, 본 개시된 기법들은, 특정 개시된 맵핑 함수들을 이용하여 이용가능한 메모리의 일부분이 파워 다운될 때 온 더 플라이 메모리 재맵핑의 방식을 설명한다. 예를 들어, 특정 실시예들에서, 전자 디바이스는 메모리의 3개의 뱅크를 가질 수 있고, 뱅크들 각각은 특정 메모리 버스를 가질 수 있다. 더 높은 레벨의 성능이 소망될 때, 메모리 컨트롤러는 특정 물리적 어드레스들을 모든 3개의 메모리 뱅크에 걸쳐 거의 고르게 분포되는 하드웨어 메모리 위치들("스토리지 셀들" 또는 "듀얼 인라인 메모리 모듈(dual in-line memory module; DIMM) 어드레스들"이라고도 함)에 맵핑할 수 있다. "물리적 어드레스"라는 용어는 본원에 이용된 바와 같이 메모리 컨트롤러에 의해 조작가능하고 임의의 적절한 사이즈일 수 있는 메모리 청크(memory chunk)를 가리킨다는 것을 알아야 한다. 예를 들어, "물리적 어드레스"라는 용어가 메모리를 맵핑 또는 재맵핑하는 것에 관하여 이용될 때, 그 용어는 메모리 컨트롤러가 더 작은 청크들을 조작할 수 있더라도, 맵핑 또는 재맵핑되는 메모리의 페이지들 또는 캐시 라인들을 가리킬 수 있다. 즉, 일부 실시예들에서, "물리적 어드레스"라는 용어는 본원에서 개시와 관련하여 이용될 때, 페이지들의 캐시 라인들이 개별적으로 메모리 컨트롤러를 통해 액세스가능할 수 있더라도, 메모리의 페이지들의 재맵핑을 가리킬 수 있다. 물리적 어드레스와 연관된 데이터가 액세스될 때, 데이터는 모든 3개의 메모리 버스를 통해 한번에 최대화된 대역폭으로 전송될 수 있다.
이러한 실시예에서, 전력 보존이 소망될 때, 메모리 뱅크들 및/또는 메모리 버스들의 클록 주파수를 간단하게 감소시키는 것에 대안적으로 또는 부가적으로, 메모리 뱅크들 및/또는 버스들 중 하나 이상이 파워 다운될 수 있다(예를 들어, 턴 오프되거나, 셀프 리프레시 모드에 두거나, 더 낮은 전력 소비 모드에 두는 등). 메모리 컨트롤러는 수학적 메모리 맵핑 함수를 통해 처음 2개의 메모리 뱅크들에서 DIMM 어드레스들로 남아 있는 물리적 어드레스들을 온 더 플라이 재맵핑할 수 있다. 제3 메모리 뱅크를 셧다운하기 전에, 메모리 컨트롤러는 제3 메모리 뱅크로부터 처음 2개의 메모리 뱅크에 직접 재맵핑된 물리적 어드레스들과 연관된 데이터를 복사할 수 있다. 그것을 위해, 일부 실시예들에서는, 어떠한 데이터도 재맵핑 프로세스 동안 제1 메모리 뱅크로부터 제2 메모리 뱅크로 또는 제2 메모리 뱅크로부터 제1 메모리 뱅크로 복사되지 않을 수 있다. 제3 메모리 뱅크로부터의 데이터가 처음 2개의 메모리 뱅크에 복사된 후에, 메모리 컨트롤러는 제3 메모리 뱅크 및/또는 메모리 버스가 셧다운되도록 할 수 있다. 본 기법들은 또한 임의의 수의 메모리 뱅크들 및/또는 총 메모리의 부분들에도 적용될 수 있다는 것을 이해해야 한다.
전술한 것을 유념하여, 개시된 메모리 관리 기법들을 이용할 수 있는 적절한 전자 디바이스들의 일반적인 설명이 아래 제공된다. 도 1에서, 본 기법들과 이용하기에 적절한 전자 디바이스들에 존재할 수 있는 다양한 컴포넌트들을 도시하는 블록도가 제공된다. 도 2에서, 여기서는 노트북 컴퓨터 시스템으로서 제공된, 적절한 전자 디바이스의 일례가 도시된다. 이들 타입의 전자 디바이스들, 및 필적하는 메모리 관리 능력들을 갖는 다른 전자 디바이스들이 본 기법들과 함께 이용될 수 있다.
도 1은 본원에 개시된 기법들을 수행할 수 있는 전자 디바이스(10)의 다양한 컴포넌트들 및 피처들을 예시하는 블록도이다. 본 예시된 실시예에서, 이러한 컴포넌트들은 하나 이상의 프로세서(들)(12), 메모리(14), 비휘발성 스토리지(16), 디스플레이(18), 입력 구조체들(20), 입력/출력(I/O) 포트들(22), 네트워킹 디바이스(24), 및 전원(26)을 포함할 수 있다. 도 1에 도시된 다양한 기능 블록들은 하드웨어 요소들(회로를 포함함), 소프트웨어 요소들(비-일시적 컴퓨터 판독 가능한 매체에 저장된 컴퓨터 코드를 포함함) 또는 하드웨어 및 소프트웨어 요소들 둘다의 결합을 포함할 수 있다. 도 1은 단지 특정 구현의 일례이고, 전자 디바이스(10)에 존재할 수 있는 컴포넌트들의 타입들을 예시하고자 의도되는 것임에 더 주목해야 한다.
프로세서(들)(12)는, 그 자체가 다양한 소프트웨어의 이용이 휘발성 메모리(14)에 일시적으로 정보를 저장하도록 할 수 있는, 오퍼레이팅 시스템(OS)의 동작을 가능하게 할 수 있다. 특히, 프로세서(들)(12)에서 실행되는 OS는, 프로세서(들)(12)에 의해 물리적 어드레스들로 변환될 수 있는 논리적 메모리 어드레스들을 이용하여 동작할 수 있고, 프로세서(들)(12)는 이들 물리적 어드레스들에 기초하여 메모리(14)에 의한 특정 메모리 동작들을 요구할 수 있다. 아래 더 상세히 논의되는 바와 같이, 메모리(14)가 프로세서(들)(12)로부터 물리적 어드레스들을 수신할 때, 메모리(14)의 메모리 컨트롤러는 물리적 어드레스들을 예를 들어 듀얼 인라인 메모리 모듈(DIMM) 어드레스들과 같은 임의의 적절한 사이즈의 하드웨어 메모리 위치(예를 들어, 라인들 또는 페이지들)로 변환할 수 있다. DIMM 어드레스들은, 물리적 어드레스들 및 이에 따라 논리적 어드레스들 또한 대응하는, 저장된 데이터의 실제의 물리적 위치를 나타낼 수 있다. 또한 아래 더 상세히 논의되는 바와 같이, 메모리(14)는, 대략 1/3 또는 그 이상만큼 동작 DIMM들의 수를 감소시키고 남아 있는 DIMM 어드레스들에 대한 남아 있는 물리적 어드레스들의 대응을 온 더 플라이 재맵핑함으로써 전력 보존을 할 수도 있다. 동작 DIMM들의 수는 더 감소될 수 있고, 이 경우 남아 있는 물리적 어드레스들이 또한 남아 있는 DIMM 어드레스들에 재맵핑될 수 있다.
메모리(14)는 본원에 설명된 본 기법들의 특정 양태들을 실행하기 위한 명령어들을 저장할 수 있다. 예를 들어, 프로세서들(12)에서 실행되는 OS 및/또는 OS에서 실행되는 소프트웨어는 본 기법들에 관한 특정 알고리즘들(예를 들어, 저전력 모드에 들어갈 때 등)을 수행할 수 있다. 이들 명령어들을 실행하기 위한 명령어들은 메모리(14)에 적어도 일시적으로 저장될 수 있다. 이러한 명령어들은 또한 예를 들어 하드 디스크 드라이브 또는 플래시 메모리를 포함할 수 있는 비휘발성 스토리지(16)에 저장될 수 있다. 디스플레이(18)는 전자 디바이스(10)의 사용자 인터페이스(UI)와 같은 OS 또는 소프트웨어의 요소들을 디스플레이할 수 있다. 사용자는 키보드 및/또는 마우스 또는 터치패드를 포함할 수 있는 입력 구조체들(20)을 통해 전자 디바이스(10)와 상호작용할 수 있다. 특정 실시예들에서, 디스플레이(18)는 입력 구조체들(20) 중 하나로서 역할을 하는 터치스크린 디스플레이일 수 있다.
전자 디바이스(10)의 I/O 포트들(22)은 전자 디바이스(10)가 다른 전자 디바이스들(10) 및/또는 외부 키보드들 또는 마우스들과 같은 다양한 주변 장치들에 데이터를 전송하고 그로부터 데이터를 수신할 수 있게 할 수 있다. 네트워킹 디바이스(24)는 PAN(personal area network) 통합(예를 들어, 블루투스), LAN(local area network) 통합(예를 들어, Wi-Fi), 및/또는 WAN(wide area network) 통합(예를 들어, 셀룰러 3G 또는 4G)을 가능하게 할 수 있다. 전자 디바이스(10)의 전원(26)은 재충전가능 리튬 폴리머(Li-poly) 배터리 및/또는 표준 교류(AC) 파워 컨버터와 같은, 임의의 적절한 전원일 수 있다.
전자 디바이스(10)는 컴퓨터 또는 다른 타입의 전자 디바이스의 형태를 취할 수 있다. 이러한 컴퓨터들은 일반적으로 한 곳에서 이용되는 컴퓨터들(예를 들어, 종래의 데스크톱 컴퓨터들, 워크스테이션들 및/또는 서버들)뿐만 아니라 일반적으로 휴대할 수 있는 컴퓨터들(예를 들어, 랩톱, 노트북, 및 태블릿 컴퓨터들)을 포함할 수 있다. 특정 실시예들에서, 컴퓨터 형태의 전자 디바이스(10)는 Apple Inc.로부터 이용가능한 MacBook®, MacBook® Pro, MacBook Air®, iMac®, Mac® mini, 또는 Mac Pro®의 모델일 수 있다. 다른 실시예들에서, 전자 디바이스(10)는 Apple Inc.로부터 이용가능한 iPod®, iPhone®, 또는 iPad®의 모델과 같은 핸드헬드 또는 태블릿 디바이스의 형태를 취할 수 있다.
예시적으로, 노트북 컴퓨터(28) 형태를 취하는 전자 디바이스(10)가 본 개시의 일 실시예에 따라 도 2에 예시된다. 도시된 컴퓨터(28)는 하우징(30), 디스플레이(18), 입력 구조체들(20), 및 I/O 포트들(22)을 포함할 수 있다. 일 실시예에서, 입력 구조체들(20)(예를 들어, 키보드 및/또는 터치패드)은 컴퓨터(28)에서 실행되는 GUI 또는 애플리케이션들을 시작, 제어, 또는 동작하는 것과 같이, 컴퓨터(28)와 상호작용하는 데 이용될 수 있다. 예를 들어, 키보드 및/또는 터치패드는 사용자가 디스플레이(18) 상에 디스플레이된 사용자 인터페이스 또는 애플리케이션 인터페이스를 내비게이트(navigate)할 수 있게 할 수 있다.
일부 실시예들에서, 전자 디바이스(10)는 특정 시간들에서 높은 대역폭들로 메모리(14)의 많은 양을 액세스하는 것을 수반할 수 있는, 디스플레이(18) 상에 고성능 그래픽을 디스플레이할 수도 있다. 그러나, 다른 시간들에, 전자 디바이스(10)는 메모리(14)의 그러한 큰 양 또는 그러한 높은 대역폭들로부터 현저하게 이득을 얻지 않을 수도 있다. 이와 같이, 전자 디바이스(10)는 메모리(14)의 특정 부분들이 전력을 보존하기 위해 셧다운되도록(예를 들어, 턴오프되도록, 셀프 리프레시 모드에 두도록, 더 낮은 전력 소비 모드에 두도록, 등) 할 수 있는, 도 3에 예시된, 메모리 관리 시스템(34)을 포함할 수 있다.
도 3에 도시된 바와 같이, 프로세서(들)(12)는 메모리 컨트롤러(36) 및 버스(38)를 통해 메모리(14)와 통신할 수 있다. 일반적으로, 프로세서(들)(12)에서 실행되는 오퍼레이팅 시스템(OS)은 논리적 어드레스들에서 메모리를 할당하고 할당해제(deallocate)할 수 있다. 일부 실시예들에서, 프로세서(들)(12)의 메모리 관리 유닛(memory management unit; MMU)(39)은, OS에 의해 이용되는 논리적 어드레스들을 메모리 컨트롤러(36)에 의해 이해되는 메모리 어드레스에 일반적으로 대응하는 물리적 어드레스들로 변환할 수 있다. MMU(39)는 하나 이상의 변환 색인 버퍼(TLB) 또는 임의의 다른 적절한 하드웨어를 이용하여 이 변환을 수행할 수 있다. 일부 다른 실시예들에서, 프로세서(들)(12)의 OS는 논리적 어드레스들을 물리적 어드레스들로 변환할 수 있다. 메모리 컨트롤러(36)는, 물리적 어드레스 중 하나로부터 데이터를 판독하거나 거기에 데이터를 기입하라는 명령어들을 프로세서(들)(12)로부터 수신할 수 있다.
프로세서(들)(12)에 의해 요구되는 연속적인 물리적 어드레스들은 뱅크 0, 뱅크 1, 및 뱅크 2로서 도 3에 도시된, 메모리 뱅크들(40A, 40B, 및 40C)에 배치된 연속적인 하드웨어 메모리 위치들에 직접 대응하지 않을 수 있다. 오히려, 메모리 컨트롤러(36)는, 프로세서(들)(12)에 의해 요구되는 물리적 어드레스들을, 메모리 뱅크들(40A, 40B, 및 40C) 전부에 걸쳐서 거의 고르게 분포될 수 있는, 본원에서 "스토리지 셀들" 또는 "듀얼 인라인 메모리 모듈(DIMM) 어드레스들"이라고도 하는, 특정 하드웨어 메모리 위치들에 맵핑할 수 있다. 메모리 뱅크들(40A, 40B, 및 40C)은 DDR3 SDRAM(double data rate three synchronous dynamic random access memory), DDR4 SDRAM(double data rate four synchronous dynamic random access memory), 및/또는 GDDR5 SDRAM(graphics double data rate five synchronous dynamic random access memory)과 같은 임의의 적절한 메모리 디바이스들을 포함할 수 있다. 메모리 컨트롤러(36)는 뱅크들 0, 1, 및 2와 메모리 컨트롤러(36)를 각각 상호접속할 수 있는 메모리 버스들(42, 44, 및 46)을 통해 3개의 메모리 뱅크들(40A, 40B, 및 40C)과 통신할 수 있다. 대안적인 실시예들에서, 메모리 관리 시스템(34)은 더 많거나 더 적은 메모리 버스들 및 메모리 뱅크들(40)을 포함할 수 있다.
위에 언급한 바와 같이, 물리적 어드레스들은 DIMM 어드레스들에 걸쳐서 메모리 뱅크들(40A, 40B, 및 40C)에 연속적으로 맵핑되지 않을 수 있고, 오히려 2개의 "관련된" 또는 "연속적인" 물리적 어드레스들이 동일한 메모리 뱅크(40)에 맵핑되지 않도록 맵핑될 수 있다. 본원에 이용되는 바와 같이, "관련된" 또는 "연속적인" 물리적 어드레스들이라는 용어들은, 물리적 어드레스들이 엄격하게 수치적으로 연속적이지 않더라도, 연속하여 액세스될 가능성이 있는 물리적 어드레스들(예를 들어, OS에 의해 연속적인 소프트웨어 논리적 메모리 어드레스들에 맵핑되는 물리적 어드레스들)을 가리킨다. 즉, 추가 대기 시간 없이 연속 DIMM 어드레스들에 대한 액세스를 제공하기 위한 메모리 뱅크들(40A, 40B, 및 40C)의 능력에 따라, 제1 물리적 어드레스는 뱅크 0에서 DIMM 어드레스에 맵핑될 수 있고, 제2 물리적 어드레스는 뱅크 1에서 DIMM 어드레스에 맵핑될 수 있고, 등등이다. 이 방식은 메모리 뱅크들(40A, 40B, 및 40C)이 상이한 대역폭 특성을 가질 때, 더 높은 대역폭 메모리 뱅크가 하나보다 많은 관련된 물리적 어드레스에 맵핑되었을 수 있도록 변경될 수 있다. 예를 들어, 일부 실시예들은 뱅크 0 및 뱅크 1에서 각각 DIMM 어드레스들에 제1 및 제2 물리적 어드레스들을 맵핑하고, 뱅크 2에 제3 및 제4 물리적 어드레스들을 맵핑하는 것을 수반할 수 있다. 일반적으로, 물리적 어드레스들은 대기 시간 "낮은 포인트들"을 감소시키기 위해서 메모리 뱅크들(40A, 40B, 및/또는 40C)의 DIMM 어드레스들에 분포될 수 있다. 물리적 어드레스들의 큰 세그먼트들이 프로세서(들)(12)에 의해 요구될 때, 메모리 컨트롤러(36)는 특정 실시예들에서 3개의 메모리 버스들(42, 44, 및 46)을 통해 한번에 3개의 물리적 어드레스들에 대한 액세스를 얻을 수 있고, 이것은 데이터 전송 대역폭을 효과적으로 최대화할 수 있다.
메모리 컨트롤러(36)는 일반적으로 각각의 메모리 뱅크(40)가 과도한 대기 시간을 발생시키지 않고 가능한 한 많은 관련된 물리적 어드레스들을 포함하도록, 프로세서(들)(12)에 의해 요구되는 물리적 어드레스들을 메모리 뱅크들(40A, 40B, 및 40C)의 DIMM 어드레스들에 맵핑할 수 있다. 따라서, 각각의 메모리 뱅크(40)가 부가적인 대기 시간을 발생시키지 않고 한번에 하나의 물리적 어드레스에만 액세스를 제공할 수 있는 경우, 물리적 어드레스들은 위에서 논의한 바와 같이, 2개의 관련된 물리적 어드레스들이 동일한 메모리 뱅크(40)에서 2개의 DIMM 어드레스들에 맵핑하지 않도록 분포될 수 있다. 각각의 메모리 뱅크(40)가 부가적인 대기 시간을 발생시키지 않고 한번에 2개보다 많지 않은 물리적 어드레스에 대해 액세스를 제공할 수 있는 경우, 물리적 어드레스들은 3개의 관련된 물리적 어드레스들이 동일한 메모리 뱅크(40)에서 3개의 DIMM 어드레스들에 맵핑하지 않도록 분포될 수 있다.
일부 대안적인 실시예들에서, 메모리 컨트롤러(36)는, 위에서 간략하게 논의한 바와 같이, 각각의 메모리 뱅크(40)가 과도한 대기 시간을 발생시키지 않고 가능한 한 많은 관련된 물리적 어드레스들을 포함하도록, 프로세서(들)(12)에 의해 요구되는 물리적 어드레스들을 메모리 뱅크들(40A, 40B, 및 40C)의 DIMM 어드레스들에 맵핑하지 않을 수 있다. 대신에, 메모리 컨트롤러(36)는 각각의 메모리 뱅크(40)가 대기 시간 없이 최대 가능한 것보다 적은 관련된 물리적 어드레스들을 포함하도록 물리적 어드레스들을 DIMM 어드레스들에 맵핑할 수 있다. 그 후에, 메모리 컨트롤러(36)가 메모리 뱅크(40) 및/또는 메모리 버스(42, 44, 및/또는 46)가 전력을 보존하기 위해 셧다운되도록 할 때, 남아 있는 메모리 뱅크들(40)의 DIMM 어드레스들에 남아 있는 물리적 어드레스들을 재맵핑하면, 2개의 관련된 물리적 어드레스들이 동일한 메모리 뱅크(40)에 맵핑되더라도 부가적인 대기 시간이 발생되지 않을 수 있다. 다시 말해, 각각의 메모리 뱅크(40)가 부가적인 대기 시간을 발생시키지 않고 한번에 2개보다 많지 않은 물리적 어드레스들에 대해 액세스를 제공할 수 있는 경우, 물리적 어드레스들은 2개의 관련된 물리적 어드레스들이 동일한 메모리 뱅크(40)에서 3개의 DIMM 어드레스들에 맵핑하지 않도록 분포될 수 있다. 따라서, 아래에 더 상세하게 논의되는 바와 같이, 메모리 컨트롤러(36)가 활성 메모리 뱅크들(40A, 40B, 및 40C)의 수를 감소시키고 2개의 관련된 물리적 어드레스들이 그 다음에 동일한 메모리 뱅크(40)에 맵핑될 수 있을 때, 메모리 뱅크(40)는 부가적인 대기 시간을 발생시키지 않을 수 있다.
또한, 특정 실시예들에서, 모든 메모리 버스들(42, 44, 및 46)이 동일한 대역폭 능력들을 갖지 않을 수 있고, 모든 메모리 뱅크들(40A, 40B, 및 40C)이 동일한 대기 시간으로 동작하지 않을 수 있다. 사실상, 메모리 뱅크들(40A, 40B, 및 40C)은 상이한 시그널링 특성 또는 상이한 사이즈를 가질 수 있다. 일부 실시예들에서, 적어도 하나의 메모리 뱅크(40)는 DDR 메모리일 수 있고, 다른 메모리 뱅크(40)는 플래시 메모리일 수 있다. 그러한 상태들 하에서, 메모리 컨트롤러(36)는, DIMM 어드레스들에 대한 물리적 어드레스들의 맵핑된 분포가 고르게 분포되지 않을 수 있더라도, 각각이 과도한 대기 시간을 발생시키지 않고 가능한 한 많은(또는, 위에서 언급한 대안적인 실시예들에서와 같이, 더 적은) 관련된 물리적 어드레스들을 포함하도록, 메모리 뱅크들(40A, 40B, 및 40C)의 DIMM 어드레스들에 물리적 어드레스들을 맵핑함으로써 그러한 비대칭성을 고려할 수 있다.
아래에 논의되는 바와 같이, 메모리 컨트롤러(36)는 메모리 뱅크들(40A, 40B, 및 40C) 및/또는 메모리 버스들(42, 44, 및 46) 중 하나 이상이 전력을 보존하기 위해 (예를 들어, 메모리를 턴오프하거나, 메모리를 셀프 리프레시 모드에 두거나, 또는 메모리를 임의의 다른 더 낮은 전력 소비 모드로 놓음으로써) 셧다운될 때를 제어할 수 있다. 메모리 컨트롤러(36)가 메모리 뱅크(40A, 40B, 또는 40C) 및/또는 메모리 버스들(42, 44, 및/또는 46) 중 하나를 셧다운하기 위한 단계들을 착수할 때, 메모리 컨트롤러(36)는 남아 있는 메모리 뱅크들(40)의 DIMM 어드레스들에 물리적 어드레스들의 감소된 세트를 동적으로 온 더 플라이 재맵핑할 수 있다.
메모리 뱅크들(40A, 40B, 및 40C) 모두가 활성일 때, 메모리 컨트롤러(36)는 메모리(14)에서 특정 메모리 스토리지 셀들, 또는 DIMM 어드레스들에 프로세서들(12)에 의해 요구되는 물리적 어드레스들을 동적으로 맵핑할 수 있다. 도 4는 그러한 동적 맵핑 방식의 일 실시예를 도시한다. 도 4의 실시예에서, 메모리 맵핑 도표(48)는 메모리 컨트롤러(36)에 의해 이용되는, 동적 맵핑 함수, 또는 수학식들에 따라, 관련된 물리적 어드레스들이 메모리 뱅크들(40A, 40B, 및 40C)에 걸쳐서 거의 고르게 분포될 수 있는 방식을 예시한다. 본 개시는 메모리 맵핑 도표(48)에 예시된 결과를 달성하는 특정 메모리 맵핑 함수를 설명하지만, 메모리 컨트롤러(36)는 전술한 방식들 중 하나에서 3개의 메모리 뱅크들(40A, 40B, 및 40C)에 걸쳐서 DIMM 어드레스들에 물리적 어드레스들을 동적으로 맵핑하는 임의의 맵핑 함수를 이용할 수 있다. 또한, 본 개시는 일반적으로 물리적 어드레스들을 특정 하드웨어 메모리 위치들에 맵핑하는 것을 참조하지만, 다른 메모리 맵핑 구성들은 복수의 메모리 뱅크들(40)에 걸쳐서 메모리의 페이지들 또는 임의의 다른 적절한 입상도들(granularities)을 분포시키는 것을 수반할 수 있다는 것을 이해해야 한다.
메모리 맵핑 도표(48)에서, "물리적 어드레스"로 표시된 가장 왼쪽의 컬럼은 프로세서(들)(12)에 의해 메모리 컨트롤러(36)에 대해 요구될 수 있는 물리적 어드레스들을 나타낸다. "뱅크"로 표시된 컬럼은 각각의 메모리 뱅크(40A, 40B, 및 40C)(뱅크 0, 뱅크 1, 및 뱅크 2)를 열거한다. 오직 설명의 목적을 위해, 각각의 메모리 뱅크(40)는 8개의 메모리 어드레스들을 유지한다. 사실상, 메모리 뱅크들(40) 및 그것들의 메모리 어드레스들의 사이즈는 훨씬 더 클 수 있고, 메모리 컨트롤러(36)에 의해 조작될 수 있는 메모리의 임의의 사이즈 청크(예를 들어, 캐시 라인 또는 페이지)를 나타낼 수 있다는 것을 이해해야 한다. "DIMM 어드레스"로 표시된 컬럼은 3개의 메모리 뱅크들(40A, 40B, 및 40C)에서, 특정 하드웨어 메모리 위치들, 또는 DIMM 어드레스들에 대한 물리적 어드레스들의 맵핑을 예시한다. 따라서, DIMM 어드레스 0은 물리적 어드레스 0과 연관된 데이터를 유지할 수 있고, DIMM 어드레스 1은 물리적 어드레스 3과 연관된 데이터를 유지할 수 있고, 등등이다. 또한, 위에서 언급한 바와 같이, 물리적 어드레스들은 DIMM 어드레스들에 직접, 연속적으로 맵핑되지 않을 수 있다. 그러나, 명확함을 위해, 물리적 어드레스들은 각각의 메모리 뱅크(40)가 유지할 수 있는 메모리 어드레스들의 양에 순차적으로 대응하도록 이해될 수 있다. 즉, 처음 8개의 물리적 어드레스들은 제1 해칭(hatching)을 통해 언급되고, 두번째 8개의 물리적 어드레스들은 제2 해칭을 통해 언급되고, 세번째 8개의 물리적 어드레스들은 제3 해칭을 통해 언급된다. 이들 해칭들은 메모리 컨트롤러(36)가 어떻게 메모리 뱅크들(40A, 40B, 및 40C)에 걸쳐서 DIMM 어드레스들에 이들 물리적 어드레스들을 맵핑 및 재맵핑할 수 있는지를 더욱 명확하게 예시하고자 의도된다.
프로세서(들)(12)가 메모리 컨트롤러(36)에 물리적 어드레스를 액세스하도록 지시할 때, 메모리 컨트롤러(36)는 메모리 맵핑 함수에 따라 메모리 뱅크들(40A, 40B, 및 40C)에서 그의 대응하는 DIMM 어드레스에 물리적 어드레스를 동적으로 맵핑할 수 있다. 메모리 맵핑 도표(48)의 결과들을 달성하기 위해, 다음의 메모리 맵핑 함수가 이용될 수 있다:
Figure 112012092854106-pct00001
Figure 112012092854106-pct00002
위의 수학식 1 및 2에서, 변수 PAddr은 메모리 맵핑 도표(48)의 가장 왼쪽의 컬럼에 열거된 물리적 어드레스를 나타내고, 변수 DIMMAddr은 물리적 어드레스가 맵핑되는 DIMM 어드레스를 나타낸다. 변수 BankIndex는, 메모리 뱅크(40)의 DIMM 어드레스들 중 어느 것에 물리적 어드레스가 맵핑될지를 변화시키기 위한 오프셋 값을 나타낸다. 변수 BankSize는 메모리 뱅크(40)당 물리적 어드레스들의 양을 나타낸다. 변수 TotalBanks는 메모리 뱅크들(40A, 40B, 및 40C)의 총 수를 나타내고, 변수 TotalMemory는 DIMM 어드레스들의 총 수를 나타낸다. 이것은, 동일한 DIMM 어드레스에 대해 순차적으로 맵핑하는 것을 피하기 위해서 그것들의 공칭 오리지널 뱅크에 의해 물리적 어드레스들을 랩어라운드(wrap around)하지만 오프셋(offset)하는, 스트립(strip) 메모리라고 할 수 있다.
일례에서, 메모리 컨트롤러(36)는 물리적 어드레스 "4"를 DIMM 어드레스 "9"에 다음과 같이 맵핑할 수 있다:
Figure 112012092854106-pct00003
다른 예에서, 메모리 컨트롤러(36)는 물리적 어드레스 "2"를 DIMM 어드레스 "16"에 다음과 같이 맵핑할 수 있다:
Figure 112012092854106-pct00004
이러한 식으로, 메모리 컨트롤러(36)는 수학식 1 및 2에 의해 설명된 맵핑 함수에 따라 물리적 어드레스들을 DIMM 어드레스들에 동적으로 맵핑할 수 있다. 메모리 맵핑 도표(48)의 실시예에서, 수학식 1 및 2의 메모리 맵핑 함수에 기초하여, 순차적인, 관련된 물리적 어드레스들이 동일한 메모리 뱅크(40)에 맵핑되는 것을 방지하는 방식으로, 물리적 어드레스들이 DIMM 어드레스들에 맵핑될 수 있다. 이 구성은 일반적으로 메모리 뱅크들이 대기 시간 없이 한번에 하나의 DIMM 어드레스를 액세스할 수 있을 때 프로세서(들)(12)가 일련의 순차적인 물리적 어드레스들을 요구할 때 이용가능한 대역폭을 최대화할 수 있다. 다른 실시예들에서, 특정 메모리 뱅크(40)가 부가적인 대기 시간 없이 주어진 시간에 2 이상의 DIMM 어드레스를 액세스할 수 있는 경우, 맵핑 함수는 2개 이상의 순차적인 물리적 어드레스들이 동일한 메모리 뱅크(40)에서 DIMM 어드레스들에 맵핑하게 물리적 어드레스들을 분포시키도록 적응될 수 있다.
특정 실시예들에서, 메모리 뱅크들(40A, 40B, 및 40C)이 부가적인 대기 시간 없이 주어진 시간에 2개 이상의 DIMM 어드레스들을 액세스할 수도 있는데도 불구하고, 메모리 컨트롤러(36)는 여전히 전술한 맵핑 함수를 이용할 수 있다. 그렇게 함에 있어서, 메모리 컨트롤러(36)가 메모리 뱅크들(40A, 40B, 및 40C) 중 하나 및/또는 메모리 버스들(42, 44, 및 46) 중 하나가 전력을 보존하기 위해 셧다운되도록 하고, 남아 있는 물리적 어드레스들을 남아 있는 메모리 뱅크들(40A, 40B, 및 40C)의 DIMM 어드레스들에 재맵핑할 때, 2개의 관련된 물리적 어드레스들이 후속하여 동일한 메모리 뱅크(40)에 맵핑되더라도, 대기 시간은 현저히 증가하지 않을 수 있다.
전자 디바이스(10)는 상이한 시점에 메모리(14)의 다양한 양들을 이용할 수 있다. 특히, 그래픽과 연관된 메모리는 상이한 시간들에 매우 가변적인 양들에 이용되는, 매우 휘발성일 수 있다. 도 5 및 6은 메모리 사용에서 그러한 변동들을 예시하는 개략도를 나타낸다. 먼저 도 5를 보면, 메모리 사용 도표(50)가 3개의 메모리 뱅크들(40A, 40B, 및 40C)에 걸쳐서 이용가능한 메모리의 총 양을 나타낸다. 사용중 메모리(in-use memory)(52)는 특히, 디스플레이(18) 상의 스크린, 커서, 애니메이션을 가질 수 있는 윈도우들, 어셈블리 버퍼들 등과 연관된 데이터를 저장할 수 있다. 그러나, 미사용 메모리(54)의 특정 양이 메모리 뱅크들(40A, 40B, 및 40C)에 남아 있을 수 있기 때문에, 사용중 메모리(52)는 전체 이용가능한 메모리의 전부를 점유하지 않을 수 있다. 메모리 사용 도표(50)에 도시된 바와 같이, 전자 디바이스(10)에 의해 현재 활성 또는 빈번한 이용 중에 있는 메모리의 총 양은 메모리 뱅크들(40A, 40B, 및 40C) 중 2개에 대해 이용가능한 메모리의 총 양보다 더 많게 걸칠 수 있다. 이와 같이, 모든 3개의 메모리 뱅크들(40A, 40B, 및 40C)이 이용될 수 있다. 메모리 사용이 도 5에 도시된 바와 같은 상황들 동안, 메모리 컨트롤러(36)에 의해 이용되는 메모리 맵핑 함수는 3개의 메모리 뱅크들(40A, 40B, 및 40C)에 걸쳐서 배치된 DIMM 어드레스들에 물리적 어드레스들을 맵핑할 수 있다.
전자 디바이스(10)의 동작 중의 다른 시간들에, 적은 메모리가 이용될 수 있다. 예를 들어, 도 6에 도시된 바와 같이, 메모리 사용 도표(56)는 더 작은 양의 사용중 메모리(52) 및 더 큰 양의 미사용 메모리(54)를 포함할 수 있다. 메모리 사용 도표(56)에서, 사용중 메모리(52)의 양은 1개보다 많은 메모리 뱅크(40)에 걸칠 수 있지만, 3개의 메모리 뱅크들(40A, 40B, 및 40C) 전부보다는 적게 걸칠 수 있다.
전자 디바이스(10)의 메모리 사용이 변함에 따라, 전자 디바이스(10)는 적은 메모리 대역폭으로 및/또는 적은 총 메모리로 충분히 동작할 수 있다. 따라서, 특정 기준에 기초하여, 전자 디바이스 메모리 관리 시스템(34)은 메모리(14)에 의해 소비되는 전력의 양을 줄이기 위한 단계들을 취할 수 있다. 도 7의 메모리 관리 팩터 도표(58)는 몇몇 그러한 디바이스 메모리 동작 기준(60)을 예시하고, 이것은 특히, 성능 카운터들(62)에 의한 표시들, 전자 디바이스(10)의 동작 상태(64), 전자 디바이스(10)의 메모리 사용 이력(66), 전자 디바이스(10)의 예상 메모리 사용(68), 전자 디바이스(10)의 열적 제한사항들(70), GPU 메모리 기능정지(72), 페이징 활동들(74), 및/또는 사용자 선호도들(76)을 포함할 수 있다.
전자 디바이스(10)에 대해 더 많거나 더 적은 메모리가 이용가능해야 하는지를 표시할 수 있는 하나의 기준을 나타내면, 성능 카운터들(62)은 전자 디바이스(10)의 시스템 성능의 오퍼레이팅 시스템(OS)에 의한 연속적인 모니터링을 나타낼 수 있다. 예를 들어, 성능 카운터들(62)은 주어진 시간에 얼마나 많은 프로세싱이 일어나고 있는지를 표시할 수 있고 및/또는 시스템 리소스들이 어떻게 소비되었는지의 최근 이력을 제공할 수 있다. 성능 카운터들(62)에 의해 표시되는 바와 같은 프로세싱 리소스들의 더 높은 소비는, 가능한 경우, 이용가능한 메모리 리소스들이 증가되어야 함을 표시(signal)할 수 있다. 유사하게, 프로세싱 리소스들의 감소된 소비는, 가능한 경우, 이용가능한 메모리 리소스들이 감소되어야 함을 표시할 수 있다.
전자 디바이스(10)에 대해 더 많거나 더 적은 메모리가 이용가능해야 하는지를 표시할 수 있는 다른 기준이 전자 디바이스(10)의 동작 상태(64)일 수 있다. 일부 실시예들에서, 동작 상태(64)는 성능 카운터들(62)에 기초하여 결정될 수 있고, 예를 들어, 전자 디바이스(10)가 활성, 고성능, 또는 유휴 상태에서 동작하고 있는지를 나타낼 수 있다. 부가적으로 또는 대안적으로, 동작 상태(64)는, 예를 들어, 전원(26)이 외부 AC 소스로부터 배터리 소스로 변경되었기 때문에 또는 배터리 전력이 낮기 때문에, 전자 디바이스(10)가 감소된 전력 상태에서 동작하고 있는지를 표시할 수 있다. 특정 동작 상태들(64)(예를 들어, 활성 상태)은 가능한 경우, 이용가능한 메모리 리소스들이 증가되어야 함을 표시할 수 있다. 다른 동작 상태들(64)(예를 들어, 유휴 상태)은 가능한 경우, 이용가능한 메모리 리소스들이 감소되어야 함을 표시할 수 있다.
과거 메모리 사용이 가능성 있는 미래 메모리 사용을 표시할 수 있기 때문에, 메모리 사용 이력(66) 및 예상 메모리 사용(68)은 전자 디바이스(10)에 대해 더 많거나 더 적은 메모리가 이용가능하게 되어야 하는지를 결정하기 위한 기준을 나타낼 수 있다. 메모리 사용 이력(66)은 최근의 역사적 메모리 사용(예를 들어, 1분, 2분, 5분, 10분, 20분, 1시간 등의 이전의 메모리 사용)을 나타낼 수 있고 및/또는 연장된 시간 기간에 대한 메모리 사용 패턴들(예를 들어, 전자 디바이스(10)의 지난 몇 일, 몇 주, 몇 달, 및/또는 수명에 걸친 메모리 사용)을 나타낼 수 있다. 예상 메모리 사용(68)은 메모리 사용 이력(66)으로부터 도출할 수 있거나 전자 디바이스(10)에 대한 메모리 사용의 통상적인 패턴들에 기초할 수 있다. 메모리 사용 이력(66) 및/또는 예상 메모리 사용(68)은 더 많거나 더 적은 메모리가 사용중에 있거나 사용중에 있을 것으로 예상되는지에 따라, 이용가능한 메모리 리소스들이 증가 또는 감소되어야 하는지를 표시할 수 있다.
메모리 사용 이력(66) 및/또는 예상 메모리 사용(68)은 다음 예들에 의해 예시될 수 있다. 제1 예에서, 전자 디바이스(10)의 오퍼레이팅 시스템(OS)은 알려진 메모리 소비 이력들을 갖는 특정 애플리케이션 프로그램들이 론치(launch)될 때를 인식할 수 있다. 역사적으로 큰 양의 메모리를 소비한 애플리케이션이 론치될 때, OS 또는 애플리케이션은 가까운 미래에 비교적 큰 양의 메모리가 소비될 수 있다는 표시를 제공할 수 있다. 다른 예에서, 전자 디바이스(10)는 큰 양의 메모리가 통상적으로 사용자의 역사적 사용 패턴들에 기초하여 사용자에 의해 사용하기 위해 필요로 될 때를 예측할 수 있다. 예를 들어, 전자 디바이스(10)는 화요일 아침에 전자 디바이스(10)가 통상적으로 상당한 양의 이미지 프로세싱을 수행한다는 것, 또는 목요일 저녁에 전자 디바이스(10)가 메모리 집중적 3-D 게임을 하는 데 이용된다는 것을 인식할 수 있다. 이와 같이, 화요일 아침과 목요일 저녁에, 메모리 사용 이력(66) 및 예상 메모리 사용(68)은 이용가능한 메모리 리소스들을 증가시키기 위하여 상당히 작용할(weigh) 수 있다. 제3 예에서, 전자 디바이스(10)에서 현재 실행되는 애플리케이션이 비교적 큰 양의 메모리가 가까운 미래에 필요할 예정임 또는 비교적 적은 양의 메모리가 가까운 미래에 필요할 예정임을 표시하라는 신호(cue)를 제공할 수 있다. 이러한 신호에 기초하여, 예상 메모리 사용(68)(예를 들어, 전자 디바이스(10)의 OS에 의해 결정되는 바와 같음)은 필요에 따라 현재 이용가능한 메모리를 증가 또는 감소시키기 위해서 작용할 수 있다. 제4 예에서, OS는 큰 패턴들의 메모리 할당이 과거에 일어났고 미래에 일어날 가능성이 있을 수 있을 때를 결정하기 위해 메모리의 할당 패턴들을 따를 수 있다.
전자 디바이스(10)에 대해 더 많거나 더 적은 메모리가 이용가능하게 되어야 하는지를 표시할 수 있는 다른 기준이 전자 디바이스(10)에 놓이는 열적 제한사항들(70)일 수 있다. 환경으로부터의 외부 열 및 전자 디바이스(10)의 컴포넌트들에 의해 발생된 내부 열로 인해, 특히 연장된 기간의 고성능 동작 후에, 전자 디바이스(10)는 열적 제한사항들(70)에 근접할 수 있다. 그러한 열적 제한사항들(70)에 근접하면, 전자 디바이스(10)는 이용가능한 메모리 리소스들이 감소되어야 함을 결정할 가능성이 높을 수 있다. 열을 발생하는 메모리 리소스들의 감소로, 내부 발생 열의 양은 따라서 감소될 수 있고 전자 디바이스(10)는 열적 제한사항들(70)로부터 빠져나갈 수 있다.
일부 실시예들에서, CPU 또는 GPU 메모리 기능정지(72)와 같은 디바이스 메모리 기능정지, 또는 전자 디바이스(10)의 임의의 다른 데이터 프로세싱 회로에 의한 메모리 기능정지, 및 메모리 페이징 활동들(74)은 전자 디바이스(10)에 대해 더 많거나 더 적은 메모리가 이용가능하게 되어야 하는지를 표시할 수 있다. GPU 메모리 기능정지(72)의 존재는 더 많은 메모리가 이용가능하게 되어야 함을 표시할 수 있고, 그러한 GPU 메모리 기능정지(72)의 결여는 전자 디바이스(10)가 현재 메모리의 과도한 공급을 받고 있음을 표시할 수 있다. 마찬가지로, 메모리 페이징 활동들(74)은 이용가능한 메모리가 활성 또는 빈번한 사용 중에 있거나 있지 않은 정도를 표시할 수 있다.
전자 디바이스(10)의 이용가능한 메모리 리소스들을 증가 또는 감소시킬지를 표시할 수 있는 추가 기준이 사용자 선호도들(76)일 수 있다. 예를 들어, 전자 디바이스(10)의 사용자는 고성능에 비해 증가된 배터리 수명에 대한 선호도, 또는 그 반대를 표시할 수 있다. 유사하게, 사용자는 전자 디바이스(10)가 더 낮은 또는 더 높은 메모리 소비 모드에 진입하도록 선택할 수 있다. 다른 예에서, 전자 디바이스(10)는 복수의 사용자들에 의한 사용이 가능할 수 있고, 상이한 사용자들은 상이한 방식으로 전자 디바이스(10)를 동작할 수 있다. 즉, 일부 사용자들은 일반적으로 메모리 집중적 애플리케이션들을 이용할 수 있고, 다른 사용자들은 비교적 적은 일반적으로 메모리를 소비하는 애플리케이션들을 이용할 수 있다. 사용자 메모리 소비 거동(behavior)을 추적함으로써, 전자 디바이스(10)는 각각의 사용자의 선호도들(76)을 결정할 수 있다. 그 후에, 사용자가 전자 디바이스(10)를 사용하고 있을 때, 사용자 선호도들(76)은 이용가능한 메모리를 증가 또는 감소시키기 위하여 작용할 수 있다.
위에서 언급한 바와 같이, 전자 디바이스(10)는 전자 디바이스(10)의 메모리(14)를 관리하는 법을 결정함에 있어서 메모리 동작 기준(60)을 고려할 수 있다. 그러한 기준(60)에 기초하여 메모리(14)를 관리하는 방법의 일 실시예가 도 8의 흐름도(80)에 나타난다. 제1 블록(82)에서, 전자 디바이스(10)(예를 들어, 메모리 컨트롤러(36), 프로세서(들)(12), 프로세서(들)(12)에서 실행되는 OS, 및/또는 OS에서 실행되는 소프트웨어)는 메모리 동작 기준(60)의 일부 또는 전부를 고려할 수 있다. 일부 실시예들에서, 기준(60)은, 모든 것을 감안할 때, 전자 디바이스(10) 메모리 사용이 초과인지 불충분한지, 또는 미래에 초과하거나 불충분하게 될 것으로 예상되는지를 확인하기 위해 서로에 대해 작용될 수 있다. 일부 실시예들에서, 특정 기준(60)에는 상이한 가중치들이 주어질 수 있고 및/또는 특정 기준(60)은 모든 다른 것들에 우선할 수 있다(예를 들어, 열적 제한사항들(70)은 열이 과도하게 될 때 우선권을 받을 수 있다).
결정 블록(84)에 의해 예시된 바와 같이, 이용가능한 메모리가 초과한 것으로 결정되거나 가까운 미래에 초과할 것으로 예상되는 경우(예를 들어, 초과 메모리를 재맵핑하고 비활성화하는 데 필요한 시간부터), 전자 디바이스(10)는 결정 블록(86)에서 메모리 사용의 초과가 메모리(14)의 하나 이상의 부분의 비활성화를 정당화하는 임계값을 가로지르는지를 고려할 수 있다. 예시적으로, 사용자가 높은 메모리 소비 애플리케이션을 닫도록 선택할 때, 전자 디바이스(10)는 일단 애플리케이션이 닫히면 현재 이용가능한 메모리가 초과할 것으로 예상됨을 결정할 수 있다. 임계값은 메모리 사용이 초과한 시간의 길이를 나타낼 수 있는 시간 성분을 포함할 수 있고, 및/또는 메모리 사용이 초과로 생각되는 정도를 나타낼 수 있는 정량적 성분(quantitative component)을 포함할 수 있다. 일부 실시예들에서, 임계값은 총 초과 메모리 사용의 양 및/또는 사용중 메모리의 양이 메모리(14)의 부분들의 특정 수 아래로 남아 있는(예를 들어, 도 6에 도시된 바와 같이, 2개보다 적은 메모리 뱅크들(40)의 사용) 시간의 양을 나타낼 수 있다. 결정 블록(86)에서 임계값에 도달하지 않은 경우, 전자 디바이스(10)는 블록(88)에서 메모리 뱅크들(40A, 40B, 및/또는 40C) 및/또는 그것들의 연관된 메모리 버스들(42, 44, 및/또는 46)의 클록 속도 및/또는 동작 전압을 감소시켜서 그것들을 감소된 전력 소비 모드로 둠으로써 일부 전력 소비를 감소시킬 수 있다. 결정 블록(86)에서 임계값에 도달한 경우, 전자 디바이스(10)는 블록(90)에서 메모리 뱅크들(40A, 40B, 및/또는 40C) 및/또는 그것들의 연관된 메모리 버스들(42, 44, 및/또는 46) 중 하나를 비활성화함으로써 부가적인 전력 소비를 감소시킬 수 있다. 그러한 비활성화가 일어날 수 있는 법에 대한 더 상세한 설명이 아래에 설명된다.
결정 블록들(84 및 86) 내지 블록(90)의 프로세스는, 하나 이상의 메모리 뱅크들(40)이 파워 다운될 때, 다양한 다른 방식으로 실행될 수 있다. 일부 실시예들에서, 메모리 컨트롤러(36)와 연관된 로직은 전자 디바이스(10)의 메모리 사용이 현재 사용중인 것보다 적은 수의 메모리 뱅크들(40A, 40B, 및 40C)에서 DIMM 어드레스들에 맵핑될 수 있는 물리적 어드레스들의 총 수로 감소되었을 때 셧다운 프로세스를 개시할 수 있다. 그렇게 하기 위해서, 특정 실시예들에서, 프로세서(들)(12)에서 실행되는 오퍼레이팅 시스템(OS), 또는 OS에서 실행되는 소프트웨어는 메모리 뱅크(40)를 파워 다운할 때를 결정하기 위해 위의 결정 블록들(84 및 86)을 따를 수 있다. OS는 그 다음에 프로세서(들)(12)에 메모리 컨트롤러(36)로 제어 신호를 전송하도록 지시할 수 있어, 블록(90)에서 셧다운 프로세스가 시작하도록 할 수 있다.
다른 실시예들에서, 프로세서(들)(12)는 메모리 사용이 현재 사용중인 것보다 적은 수의 메모리 뱅크들(40A, 40B, 및 40C)을 포함하도록 떨어졌을 때를 자동으로 검출할 수 있다. 예를 들어, MMU(39)는 현재 사용중인 및/또는 물리적 어드레스들에 맵핑되는 논리적 어드레스들의 총 수의 표시를 프로세서(들)(12)에 주기적으로 또는 연속적으로 제공할 수 있다. 그 후에, 프로세서(들)(12)는 셧다운 프로세스를 개시하기 위해 메모리 컨트롤러(36)에 제어 신호를 전송할 수 있다.
특정 다른 실시예들에서, 메모리 컨트롤러(36)와 연관된 로직은 어느 물리적 어드레스들이 프로세서(들)(12)에 의해 요구되고 있는지를 모니터링함으로써 더 적은 메모리 뱅크들(40A, 40B, 및 40C)이 이용되어야 하는 때를 자동으로 검출할 수 있다. 예를 들어, 뱅크 1을 넘어서 연장하는 물리적 어드레스들이 임계 기간(예를 들어, 10초, 20초, 1분, 2분, 5분, 10분, 20분 등) 동안 프로세서(들)(12)에 의해 요구되지 않으면, 메모리 컨트롤러(36)는 이들 물리적 어드레스들이 필요하지 않음을 이해할 수 있고, 따라서 자동으로 셧다운 프로세스를 개시할 수 있다.
결정 블록(84)으로 돌아가면, 전자 디바이스(10)의 메모리 사용이 초과한 것으로 결정되지 않으면, 전자 디바이스(10)는 결정 블록(92)에서 현재 이용가능한 총 메모리가 메모리 동작 기준(60)에 비추어 불충분한지를 결정할 수 있다. 결정 블록(94)에서, 전자 디바이스(10)는 메모리 사용의 불충분도가 이전에 셧다운된 메모리(14)의 하나 이상의 부분들의 재활성화를 정당화하는 임계값을 가로지르는지를 고려할 수 있다. 이러한 임계값은 메모리 사용이 불충분한 시간의 길이를 나타낼 수 있는 시간 성분을 포함할 수 있고, 및/또는 메모리 사용이 불충분한 것으로 생각되는 정도를 나타낼 수 있는 정량적 성분을 포함할 수 있다. 일부 실시예들에서, 임계값은 사용중 메모리의 양이 메모리(14)의 부분들의 특정 수에 근접하는 한계 위로 남아 있는 시간의 양 및/또는 총 메모리 사용의 양을 나타낼 수 있다(예를 들어, 하나의 메모리 뱅크(40)가 셧다운되었을 때, 2개의 메모리 뱅크(40) 거의 전부의 사용).
결정 블록(94)에서 임계값에 도달하지 않은 경우, 블록(96)에서 메모리 뱅크들(40A, 40B, 및/또는 40C) 및/또는 그것들의 연관된 메모리 버스들(42, 44, 및/또는 46)의 클록 속도 및/또는 동작 전압을 증가함으로써, 전력 소비를 현저하게 증가시키지 않고, 전자 디바이스(10)의 성능은 증가될 수 있다. 결정 블록(94)에서 임계값에 도달한 경우, 전자 디바이스(10)는 블록(98)에서, 앞서 셧다운되었을 수 있는, 메모리 뱅크들(40A, 40B, 및/또는 40C) 및/또는 그것들의 연관된 메모리 버스들(42, 44, 및/또는 46) 중 하나를 재활성화할 수 있다. 기준(60)이 결정 블록(84)에서 메모리 사용이 초과한 것도, 블록(92)에서 메모리 사용이 불충분한 것도 표시하지 않으면, 전자 디바이스(10)는 블록(100)에 의해 표시된 바와 같이, 메모리(14)의 구성을 실질적으로 변경하지 않을 수 있다.
위에서 언급한 바와 같이, 메모리(14)의 하나 이상의 부분들이 전력을 보존하기 위해 비활성화될 수 있다. 일부 실시예들에서, 도 9에 의해 예시된 바와 같이, 메모리(14)의 그러한 부분들은 하나 이상의 메모리 뱅크들(40)을 포함할 수 있다. 특히, 도 9는 메모리 관리 시스템(34)이 메모리 뱅크(40C)로부터 남아 있는 메모리 뱅크들(40A 및 40B)로 특정 물리적 어드레스들을 재맵핑 및 복사한 후에, 메모리 뱅크(40C)(뱅크 2) 및/또는 연관된 메모리 버스(46)가 셧다운되도록 함으로써, 전력을 보존할 수 있는 방식을 예시한다. 도 9에서, 메모리 컨트롤러(36)는 메모리 뱅크(40C)(뱅크 2) 및 연관된 메모리 버스(46)가 셧다운하도록 하는 것으로서 예시된다. 그러나, 메모리 컨트롤러(36)는 대안적으로 전자 디바이스(10)의 설계 고려사항들 및/또는 동작 상태에 따라, 메모리 뱅크들(40A 또는 40B) 및/또는 메모리 버스들(42 또는 44) 중 임의의 다른 것이 셧다운되도록 할 수 있다는 것을 이해해야 한다. 또한, 하나의 전체 메모리 뱅크(40C)가 셧다운된 것으로서 예시되지만, 일부 실시예들에서, 메모리 컨트롤러(36)는 메모리 뱅크(40C)의 일부분만이 셧다운되도록 할 수 있다.
메모리 컨트롤러(36)는 선택된 메모리 뱅크(40C) 및/또는 메모리 버스(46)가 임의의 적절한 방식으로 셧다운하도록 할 수 있다. 예를 들어, 일 실시예에서, 메모리 뱅크(40C)는 메모리 컨트롤러(36)로부터 특정 제어 신호 또는 명령어의 수신시에 셧다운이 가능할 수 있다. 부가적으로 또는 대안적으로, 메모리 컨트롤러(36)는 선택된 메모리 뱅크(40)로의 전력 공급이 예를 들어, 스위치(도시되지 않음)에 전력을 차단하도록 지시함으로써 차단되도록 할 수 있다.
메모리 셧다운 프로세스를 실행하는 방법의 일 실시예가 도 10의 흐름도(110)에 의해 예시된다. 제1 블록(112)에서, 메모리 컨트롤러(36)는 메모리 뱅크들(40A, 40B, 또는 40C) 및/또는 메모리 버스들(42, 44, 또는 46) 중 하나를 파워 다운하는 프로세스를 시작할 수 있다. 도 8을 참조하여 위에서 언급한 바와 같이, 메모리 컨트롤러(36), 프로세서(들)(12), 프로세서(들)(12)에서 실행되는 OS, 및/또는 OS에서 실행되는 소프트웨어는 메모리 동작 기준(60) 중 하나 이상에 기초하여 메모리 뱅크들(40A, 40B, 또는 40C) 중 하나를 셧다운할지를 결정할 수 있다. 예시적으로, 블록(112)은 OS가 메모리의 그의 워킹 세트가 메모리 뱅크들(40A, 40B, 또는 40C) 중 하나로부터 메모리를 사용하지 않기에 충분히 작거나 작게 될 수 있다고 결정한 후에 일어날 수 있다. 일부 실시예들에서, OS는 그 다음에 메모리 뱅크들(40A, 40B, 또는 40C) 중 하나의 것과 동일한 메모리의 양을 사용하는 것을 중단할 수 있다. 예를 들어, 메모리 뱅크들(40A, 40B, 및 40C) 각각이 동일한 용량을 갖는 경우, OS는 메모리의 1/3을 사용하는 것을 중단할 수 있다.
블록(112)에서 셧다운 프로세스를 시작하기 위한 결정이 행해진 후에, 메모리 컨트롤러(36)는 블록(114)에서 셧다운할 메모리 뱅크들(40A, 40B, 또는 40C)을 선택할 수 있다. 일부 실시예들에서, 메모리 컨트롤러(36), 프로세서(들)(12), 프로세서(들)(12)에서 실행되는 OS, 및/또는 OS에서 실행되는 소프트웨어는 메모리 뱅크들(40A, 40B, 및 40C) 중 하나를 특정 순서로 셧다운하기 위해 선택할 수 있다. 예를 들어, 메모리 뱅크들(40A, 40B, 및 40C) 전부가 현재 활성인 경우, 뱅크 2가 셧다운을 위해 선택될 수 있고; 메모리 뱅크들(40A, 40B, 및 40C) 중 2개만이 현재 활성인 경우, 뱅크 1이 셧다운을 위해 선택될 수 있다. 예시적으로, OS는 메모리 뱅크(40A, 40B, 또는 40C)가 셧다운되도록(예를 들어, 턴오프되도록 또는 셀프 리프레시 모드에 두도록) 하기 위해 메모리 컨트롤러(36)를 호출할 수 있다.
대안적으로, 블록(114)에서, 메모리 컨트롤러(36), 프로세서(들)(12), 프로세서(들)(12)에서 실행되는 OS, 및/또는 OS에서 실행되는 소프트웨어는 대역폭 팩터들과 균형이 잡힌 전력 소비 팩터들에 기초하여 셧다운할 메모리 뱅크(40) 및/또는 메모리 버스(42, 44, 또는 46)를 결정할 수 있다. 예를 들어, 메모리 뱅크들(40A, 40B, 및 40C) 및/또는 메모리 버스들(42, 44, 및 46) 중 특정한 것이 더 높은 대역폭 능력을 가질 수 있지만, 더 많은 전력을 소비할 수 있다. 대역폭 관심사가 전력 소비 관심사보다 더 중요할 때, 메모리 컨트롤러(36)는 셧다운하기 위해 더 낮은 대역폭 메모리 뱅크(40) 및/또는 메모리 버스(42, 44, 또는 46)를 선택할 수 있어, 일부 전력을 보존하지만 더 큰 양의 메모리 대역폭을 지킬 수 있다. 전력 소비 관심사가 대역폭 관심사보다 더 중요할 때, 메모리 컨트롤러(36)는 그 대신에 셧다운하기 위해 더 높은 대역폭 메모리 뱅크(40) 및/또는 메모리 버스(42, 44, 또는 46)를 선택할 수 있다.
아래에 더 상세히 설명되는 바와 같이, 블록(116)에서, 선택된 메모리 뱅크(40)를 셧다운하기 전에 메모리 컨트롤러(36)는 남아 있는, 또는 활성인 물리적 어드레스들을 DIMM 어드레스들에 재맵핑하고, 셧다운되도록 선택된 메모리 뱅크(40)로부터 데이터를 복사할 수 있다. 재맵핑 및 복사 후에, 블록(118)에서, 메모리 컨트롤러(36)는 선택된 메모리 뱅크(40) 및/또는 메모리 버스(42, 44, 또는 46)가 임의의 적절한 방식으로 셧다운하도록 할 수 있다. 예를 들어, 일 실시예에서, 메모리 뱅크(40)는 메모리 컨트롤러(36)로부터 특정 제어 신호 또는 명령어의 수신시에 셧다운이 가능할 수 있다. 부가적으로 또는 대안적으로, 메모리 컨트롤러(36)는 선택된 메모리 뱅크(40)로의 전력 공급이 예를 들어, 스위치(도시되지 않음)에 전력을 차단하도록 지시함으로써 차단되도록 할 수 있다.
도 11로 가면, 도 10의 블록(116) 동안 이용되는 바와 같이, 메모리 맵핑 도표(120)는 3-뱅크 맵핑 방식으로부터 2-뱅크 맵핑 방식으로 동적으로 온 더 플라이 재맵핑하는 방식을 예시한다. "물리적 어드레스"로 표시된 컬럼은 물리적 어드레스들을 열거한다. "비활성 물리적 어드레스들"이라고 할 수 있는, 더 이상 사용중이 아닌 물리적 어드레스들(예를 들어, 16-23)은 대시 기호 포맷팅(dashed formatting)으로 예시된다. "뱅크"로 표시된 컬럼은 설명 목적만을 위해, 8개의 DIMM 어드레스들을 유지하도록 도시되는 메모리 뱅크들(40A, 40B, 및 40C)(뱅크 0, 뱅크 1, 및 뱅크 2)을 열거한다. 사실상, 메모리 뱅크들(40) 및 그것들의 메모리 어드레스들의 사이즈는 훨씬 더 클 수 있고, 메모리 컨트롤러(36)에 의해 조작될 수 있는 메모리의 임의의 사이즈 청크(예를 들어, 캐시 라인 또는 페이지)를 나타낼 수 있다는 것을 이해해야 한다. 셧다운될 메모리 뱅크(40)(예를 들어, 뱅크 2)가 대시 기호 포맷팅으로 예시된다. "DIMM 어드레스 (3 뱅크들)"로 표시된 컬럼은 3개의 메모리 뱅크들(40A, 40B, 및 40C)에서, 특정 하드웨어 메모리 저장 위치들, 또는 DIMM 어드레스들에 대한 물리적 어드레스들의 원래의 맵핑을 예시한다. "DIMM 어드레스 (2 뱅크들)"로 표시된 컬럼은 활성 메모리 뱅크들(40)의 수가 3으로부터 2로 감소될 때, 특정 하드웨어 메모리 저장 위치들, 또는 DIMM 어드레스들에 대한 활성 물리적 어드레스들의 재맵핑을 예시한다.
재맵핑 이전에, 프로세서(들)(12)에서 실행되는 OS, 오퍼레이팅 시스템(OS)에서 실행되는 소프트웨어, 또는 프로세서(들)(12)(예를 들어, 일부 실시예들에서, MMU(39))는 사용중 물리적 어드레스들이 파워 다운될 메모리의 영역 밖에 있도록 사용중 물리적 어드레스들을 배열할 수 있다. 예를 들어, 특정 와이어드(wired) 물리적 어드레스들 또는 페이지들이 클리어 아웃(clear out)될 수 있다. 그 후에, OS, 소프트웨어, 및/또는 프로세서(들)(12)는 메모리 컨트롤러(36)가 동적 재맵핑 프로세스를 시작하기 위해 커맨드를 수신하도록 할 수 있다. 부가적으로 또는 대안적으로, 메모리 컨트롤러(36)는 위에 논의된 바와 같이 동적 재맵핑 프로세스를 시작하도록 자동으로 결정할 수 있다.
메모리 컨트롤러(36)는 3-뱅크 맵핑 방식에서, 제3 메모리 뱅크(40)의 DIMM 어드레스들에, 맵핑된 사용중 물리적 어드레스들을 재맵핑하기 위해 대안적인 동적 메모리 맵핑 함수를 이용할 수 있다. 대안적인 메모리 맵핑 함수는 3-뱅크 방식에서 비활성 물리적 어드레스들에 맵핑하는 DIMM 어드레스들을 재맵핑하면서, 사용중으로 남아 있을 메모리 뱅크들(40A, 40B, 및 40C)에 배치된 활성 물리적 어드레스들의 맵핑을 유지하는 임의의 적절한 함수일 수 있다. 메모리 재맵핑 도표(120)의 예에서, 메모리 뱅크들 0 및 1은 활성인 채로 남아 있을 것이고, 뱅크들 0 및 1에서 DIMM 어드레스들에 맵핑된 활성 물리적 어드레스들(예를 들어, 0-15)은 변화하지 않을 수 있다. 활성 메모리 뱅크들(40A, 40B, 및 40C) 중 하나의 DIMM 어드레스가 비활성 물리적 어드레스(예를 들어, 16-23)에 맵핑될 때, 메모리 컨트롤러(36)는 이들 DIMM 어드레스들을 온 더 플라이 재맵핑할 수 있다. 남아 있는 물리적 어드레스들에 대한 대안적인 메모리 맵핑 함수는 다음의 관계식을 포함할 수 있다:
Figure 112012092854106-pct00005
여기서,
Figure 112012092854106-pct00006
Figure 112012092854106-pct00007
Figure 112012092854106-pct00008
Figure 112012092854106-pct00009
위의 수학식들 3-7에서, 변수 ALT_DIMMAddr3_2는 2-뱅크 맵핑 방식에 대한 대안적인 DIMM 어드레스 맵핑을 나타내고, 변수 DIMMAddr는 3-뱅크 맵핑 방식에 대한 DIMM 어드레스 맵핑을 나타내고, ReducedMemory3_2는 남아 있는 활성 메모리 뱅크들(40A, 40B, 및 40C)에 걸쳐서 이용가능한 새로 감소된 양의 DIMM 어드레스들을 나타낸다. 변수 BankReindex3_2는 대안적인 DIMM 어드레스 맵핑을 확인하기(ascertain) 위해 변수들 FirstBankEntries3_2, FirstBankOffset3_2, 및 SecondBankOffset3_2와 결합하여 이용된다. 이들 변수들을 결정함에 있어서 사용될 때, 변수 BankSize는 메모리 뱅크(40)당 물리적 어드레스들의 양을 나타내고, 변수 TotalBanks는 메모리 뱅크들(40A, 40B, 및 40C)의 총 수를 나타내고, 변수 ReducedBanks3_2는 일단 선택된 메모리 뱅크(40)가 셧다운되면 남아 있는 메모리 뱅크들(40A, 40B, 및 40C)의 수를 나타낸다.
도 4를 참조하여 위에서 언급한 바와 같이, 그리고 또한 도 11에 예시된 바와 같이, 3-뱅크 메모리 맵핑 방식 하에서, 물리적 어드레스 "4"는 DIMM 어드레스 "9"에 맵핑한다. 2-뱅크 메모리 맵핑 모드에서, 수학식들 3-7의 대안적인 메모리 맵핑 함수를 이용하여, 물리적 어드레스 "4"는 계속해서 DIMM 어드레스 "9"에 맵핑될 수 있다. 반대로, 물리적 어드레스 "2"는 셧다운될 메모리 뱅크(40)(예를 들어, 뱅크 2)에 배치되는 DIMM 어드레스 "16"로부터, DIMM 어드레스 "6"로 재맵핑될 수 있다.
메모리 컨트롤러(36)는 곧 셧다운될(soon-to-be-shut-down) 메모리 뱅크(40)(예를 들어, 뱅크 2)로부터 데이터를 새로 재맵핑된 메모리 뱅크들 0 및 1로 복사하기 위해 복사 기능(122)을 이용할 수 있다. 메모리 데이터를 복사함에 있어서, 메모리 컨트롤러(36)는 뱅크들 0 및 1의 재맵핑된 어드레스들 내의 데이터를 간단하게 다시 쓸 수 있다. 예시적으로, 메모리 컨트롤러(36)는 남아 있는 활성 물리적 어드레스들에 대응하는 곧 셧다운될 메모리 뱅크(40)의 DIMM 어드레스들로부터 데이터를 판독할 수 있다. 메모리 컨트롤러(36)는 그 다음에 대안적인 DIMM 어드레스 또는 대안적인 DIMM 어드레스와 원래의 DIMM 어드레스 둘다에 데이터를 기입할 수 있다. 복사 기능(122)은 활성 뱅크들 0 또는 1 중 임의의 것으로부터 복사하는 것과 같은, 다른 중간 복사 단계들 없이 뱅크 2로부터 뱅크들 0 및 1로 데이터를 효율적으로 전달할 수 있다는 것에 주목해야 한다. 마지막으로, 메모리 재맵핑 도표(120)에 도시된 바와 같이 일어날 수 있는 메모리 재맵핑 프로세스는, 프로세서(들)(12)의 MMU(39)의 변환 색인 버퍼(TLB)의 부분에서 임의의 작용을 수반하지 않을 수 있지만, 오히려 빠르고 효율적인 방식으로 재맵핑 및 복사를 수행하는 메모리 컨트롤러(36)만으로 동적으로 일어날 수 있다는 것에 주목해야 한다.
셧다운될 메모리 뱅크(40)(예를 들어, 뱅크 2)는 재맵핑이 일어나고 있는 동안 계속해서 액세스 가능할 수 있다. 셧다운될 메모리 뱅크(40)(예를 들어, 뱅크 2)에 저장된 데이터는 3-뱅크 DIMM 어드레스 맵핑과 2-뱅크 DIMM 어드레스 맵핑으로 둘다 기입(예를 들어, 뱅크 0, 뱅크 1, 및 뱅크 2에서 하드웨어 메모리 위치들에 기입)되기 때문에, 셧다운될 메모리 뱅크(40) 상의 데이터는 메모리 뱅크(40)가 실제로 셧다운될 때까지 3-뱅크 DIMM 어드레스 맵핑에서 액세스 가능하게 남아 있을 것이다. 또한, 이러한 재맵핑의 주요한 것은, 3개의 메모리 뱅크(40)로부터 2개의 메모리 뱅크(40)로의 경우만 아니라, 메모리 뱅크들(40)의 임의의 감소된 수로 확장될 수 있다는 것을 이해해야 한다. 즉, 셧다운될 메모리 뱅크(40)(예를 들어, 뱅크 2)가 마지막으로 셧다운될 때까지, 메모리 컨트롤러(36)는 계속해서 2-뱅크 DIMM 어드레스 맵핑에서 동작할 수 있다. 메모리 컨트롤러(36)는 계속해서 2-뱅크 DIMM 어드레스 맵핑에서 동작하기 때문에, 재맵핑 동작은 셧다운될 메모리 뱅크(예를 들어, 뱅크 2)가 마지막으로 셧다운되기 전 임의의 시간에 중단될 수 있다.
특정 실시예들에서, 메모리 컨트롤러(36)는 곧 셧다운될 메모리 뱅크(40)(예를 들어, 뱅크 2)로부터 데이터를 새로 재맵핑된 메모리 뱅크들 0 및 1로, 파괴적으로(destructively) 복사하기보다는, 스왑(swap)할 수 있다. 예시적으로, 물리적 어드레스 2는 물리적 어드레스 18과 스왑될 수 있고, 물리적 어드레스 5는 21과 스왑될 수 있고, 등등이다. 복사 기능보다는 이러한 스왑 기능을 수행하는 것이 스왑이 일어나고 있는 동안 스왑되고 있는 물리적 어드레스들을 유지하기 위해 부가적인 메모리 버퍼(들)를 수반할 수 있지만, 스왑핑(swapping)은 현재 사용중이 아닌 물리적 어드레스들로부터의 데이터가 미래에 이용가능하게 되도록 할 수 있다. 구체적으로, 셧다운될 메모리 뱅크(40)는 셀프 리프레시 모드에 둘 수 있고, 이것은 비교적 적은 전력을 소비할 수 있지만 메모리 뱅크(40) 내에 저장된 데이터를 보존할 수 있다. 나중에, 메모리 뱅크(40)가 다시 활성화되어 재맵핑이 일어날 때, 원래 스왑된 물리적 어드레스들은 다시 스왑될 수 있다.
또한, 위에서 언급한 바와 같이, 일부 실시예들에서, 수학식들 1 및 2의 원래의 3-뱅크 메모리 맵핑 함수는, 각각의 메모리 뱅크(40)가 대기 시간 없이 가능한 최대보다 더 적은 관련된 물리적 어드레스들을 포함하도록, DIMM 어드레스들에 걸쳐서 물리적 메모리 어드레스들을 분포하도록 계산될 수 있다. 그 후에, 수학식들 3-7의 대안적인 맵핑 함수를 이용하여, 2개의 관련된 물리적 어드레스들이 동일한 메모리 뱅크(40)에 맵핑되더라도, 메모리 뱅크(40)는 부가적인 대기 시간을 발생시키지 않을 수 있다. 따라서, 2개의 관련된 물리적 어드레스들은 대안적인 맵핑 함수에 기초하여 동일한 메모리 뱅크(40)에 맵핑될 수 있지만, 메모리(14)의 대기 시간을 현저하게 증가시키지 않을 수 있다.
도 12로 가면, 흐름도(124)는 메모리 재맵핑 도표(120)에 도시된 프로세스를 실행하기 위한 방법의 실시예를 설명한다. 제1 블록(126)에서, 메모리 관리 시스템(34)은 2-뱅크 메모리 맵핑 모드로의 진입을 개시할 수 있다. 블록(128)에서, 메모리 컨트롤러(36)는 프로세서(들)(12)로부터 물리적 어드레스들이 수신될 때 수학식들 3-7의 대안적인 메모리 맵핑 함수를 이용할 수 있다. 블록(130)에서, 메모리 뱅크 2 상의 남아 있는 활성 물리적 어드레스들의 메모리 데이터는 메모리 맵핑 도표(120)에 예시된 바와 같이, 메모리 뱅크들 0 및 1의 새로 재맵핑된 메모리 어드레스들에 복사될 수 있다. 일 실시예에서, 메모리 컨트롤러(36)는 오직 셧다운될 메모리 뱅크(40)의 DIMM 어드레스들로부터 데이터를 판독할 수 있지만, 3-뱅크 DIMM 어드레스들에 그리고 2-뱅크 DIMM 어드레스들에 다시 데이터를 기입할 수 있다. 이러한 복사가 일어나는 동안, 메모리 컨트롤러(36)는 계속해서 3-뱅크 메모리 맵핑 모드에서 동작할 수 있어, 각각의 복사가 원자적(atomic)이면, 2-뱅크 메모리 맵핑 모드를 향해 비동기로 전이할 수 있다(즉, 주어진 DIMM 어드레스의 각각의 판독은 2개의 DIMM 어드레스들로의 기입들에 의해 실현된다). 즉, 오퍼레이팅 시스템(OS)의 관점에서, 메모리 컨트롤러(36)는 2-뱅크 메모리 맵핑에서 동작하고 있는 것으로 보인다. OS의 관점에서, OS는 단지 감소된 어드레스 공간을 이용하고 있다. 사실상, 모든 판독들 및 기입들은 3-뱅크 메모리 맵핑으로부터 2-뱅크 메모리 맵핑으로의 전이가 일어나고 있는 동안 예상한 대로 일어날 수 있다. 이러한 식으로, 메모리는 초과 복사 없이 동적으로 온 더 플라이 재맵핑될 수 있다. 따라서, 메모리 컨트롤러(36)가 다른 목적을 위해 메모리 뱅크들(40)에 저장된 메모리에서 다른 동작들을 수행할 필요가 있다면, 블록(130)의 복사는 메모리 컨트롤러(36)가 그러한 다른 동작들을 수행하는 동안 잠시 멈출 수 있다. 다른 동작들이 끝났을 때, 블록(130)의 원자 복사는 완료될 때까지 계속할 수 있다. 그 후에, 도 10의 블록(118)을 참조하여 위에서 논의한 바와 같이, 선택된 메모리 뱅크(40)는 셧다운될 수 있다. 특정 실시예들에서, 메모리 컨트롤러(36)는 프로세서(들)(12) 또는 오퍼레이팅 시스템(OS)에 의해 알 수 없는 방식으로 이들 기법들을 실행할 수 있다. 일부 실시예들에서, OS는 메모리 컨트롤러(36)가 블록들(126, 128, 및 130) 중 특정 또는 전부를 수행하도록 할 수 있다(예를 들어, OS는 블록(130)에서 원자 복사들을 일으킬 수 있다).
일 실시예에서, 메모리 컨트롤러(36)는 다음의 관계식을 적용함으로써 셧다운될 메모리 뱅크(40)의 DIMM 어드레스에 맵핑된 물리적 어드레스를 식별할 수 있다:
Figure 112012092854106-pct00010
Figure 112012092854106-pct00011
여기서, 변수 DIMMAddr은 물리적 어드레스가 맵핑되는 DIMM 어드레스를 나타내고, 변수 PAddr은 물리적 어드레스를 나타낸다. 변수 DIMMAddrBank는 오프셋 값을 나타낸다. 변수 BankSize는 메모리 뱅크(40)당 물리적 어드레스들의 양을 나타내고, 변수 TotalBanks는 메모리 뱅크들(40A, 40B, 및 40C)의 총 수를 나타내고, 변수 TotalMemory는 DIMM 어드레스들의 총 수를 나타낸다.
예시적으로, 뱅크 2 상의 DIMM 어드레스 "16"는 위의 수학식들 8 및 9에 따라 물리적 어드레스 "2"에 맵핑한다. DIMM 어드레스 "16"가 활성을 유지하기 위해 물리적 어드레스들 중의 물리적 어드레스 "2"와 연관된 데이터를 유지하기 때문에, 메모리 컨트롤러(36)는 DIMM 어드레스 "16"를 판독하고 그 안에 저장된 데이터를 물리적 어드레스 "2"에 대한 원래의 DIMM 어드레스 맵핑뿐만 아니라 물리적 어드레스 "2"에 대한 대안적인 DIMM 어드레스 맵핑으로 복사할 수 있다. 메모리 컨트롤러(36)는 비활성 물리적 어드레스(예를 들어, "17")가 결정될 때까지 셧다운될 메모리 뱅크(40)(예를 들어, 뱅크 2)의 DIMM 어드레스들 각각을 평가하는 것을 계속할 수 있다. 또한, 셧다운될 메모리 뱅크(40)(예를 들어, 뱅크 2)는 재맵핑이 일어나고 있는 동안에 계속해서 액세스 가능할 수 있다. 셧다운될 메모리 뱅크(40)(예를 들어, 뱅크 2)에 저장된 데이터는 파괴적으로 복사되어 대안적인 DIMM 어드레스 맵핑 및 원래의 DIMM 어드레스 맵핑 둘다에 기입되기 때문에, 셧다운될 메모리 뱅크(40) 상의 데이터는, 메모리 컨트롤러(36)가 대안적인 DIMM 어드레스 맵핑 방식을 따를 수 있는, 메모리 뱅크(40)가 실제로 셧다운될 때까지 그 원래의 DIMM 어드레스 맵핑에서 액세스 가능하게 유지할 것이다. 또한 이러한 재맵핑의 주요한 것은 임의의 감소된 수의 메모리 뱅크들(40)로 확장될 수 있다는 것을 알아야 한다.
일반적으로, 3-뱅크 메모리 맵핑으로부터 2-뱅크 메모리 맵핑으로와 같이, 더 많은 메모리 뱅크들(40)을 포함하는 메모리 맵핑으로부터 더 적은 메모리 뱅크들(40)을 포함하는 메모리 맵핑으로 전이한 후에, 하나 이상의 메모리 뱅크들(40)은 비활성일 수 있다. 그러나, 도 24 및 25에 도시된 실시예와 같은 특정 실시예들에서, 앞서 셧다운된 메모리 뱅크(40)(예를 들어, 뱅크 2)는 특정 시간에 잠시 파워 온될 수 있다. 특히, 데이터는 2-뱅크 메모리 맵핑에 의해 정의된 DIMM 어드레스로부터 판독될 수 있지만, 3-뱅크 메모리 맵핑 및 2-뱅크 메모리 맵핑에 의해 정의된 DIMM 어드레스에 기입될 수 있다. 이러한 식으로, 제3 뱅크는 시간의 적어도 일부에(예를 들어, 기입되지 않는 동안 셀프 리프레시 모드에서) 비활성일 수 있어, 전력을 절약할 수 있다. 그러나, 메모리 컨트롤러(36)가 3-뱅크 맵핑으로 다시 전환할 때, DIMM 어드레스들의 3-뱅크 맵핑으로의 데이터의 복사는 이미 일어났을 것이므로, 시간을 절약할 수 있다. 이러한 실시예는 특히 비대칭의 판독이 우세한 환경들에 유용할 수 있다.
도 24 및 25는 도 10을 참조하여 위에서 더 상세히 설명되는 대안적인 메모리 맵핑(120)을 예시한다. 이와 같이, 이 논의는 여기서 재현하지 않는다. 도 24 및 25에 도시된 실시예에서, 뱅크 0 및 뱅크 1만이 활성이고, 메모리 컨트롤러(36)는 일반적으로 2-뱅크 메모리 맵핑에서 동작하고 있다. 즉, 도 24에 도시된 예에서, 메모리 컨트롤러(36)가 물리적 어드레스 "2"를 판독하기 위해 판독 동작(244)을 수행하기로 선택할 때, 메모리 컨트롤러는 오직 2-뱅크 메모리 맵핑에서 물리적 어드레스 "2"에 맵핑하는 DIMM 어드레스 "6"으로부터 판독한다. 메모리 뱅크 2는 데이터가 판독되고 있을 때 비활성을 유지하므로, 전력을 절약한다.
도 25에 도시된 바와 같이, 메모리 컨트롤러(36)가 메모리 뱅크들(40)에 데이터를 기입하기로 선택할 때, 메모리 컨트롤러(36)는 2-뱅크 메모리 맵핑뿐만 아니라 3-뱅크 메모리 맵핑으로 데이터를 기입할 수 있다. 그렇게 하기 위해서, 메모리 뱅크 2는 적어도 일시적으로 활성화될 수 있다. 도 25의 예에서, 메모리 컨트롤러(36)가 물리적 어드레스 "2"를 기입하기 위해 기입 동작(246)을 수행하기로 선택할 때, 메모리 컨트롤러는 뱅크 0 상의 DIMM 어드레스 "6"뿐만 아니라 뱅크 2 상의 DIMM 어드레스 "16"에도 기입할 수 있다. 메모리 컨트롤러(36)가 나중에 2-뱅크 메모리 맵핑으로부터 3-뱅크 메모리 맵핑으로 전이하는 경우, 물리적 어드레스 "2"의 내용이 이미 DIMM 어드레스 "16"에 배치되어 있기 때문에, DIMM 어드레스 "6"으로부터의 데이터는 DIMM 어드레스 "16"으로 복사될 필요가 없다.
도 11에 예시된 동적 메모리 재맵핑의 프로세스는 도 13의 메모리 맵핑 도표(140)에 의해 도시된 바와 같이, 활성 메모리의 양을 더 감소하도록 확장될 수 있다. 메모리 맵핑 도표(140)는 2개의 메모리 뱅크(40A, 40B, 및 40C)로부터 1개의 메모리 뱅크(40)로의 메모리 사용의 감소를 예시한다. "물리적 어드레스"로 표시된 컬럼은 물리적 어드레스들을 열거한다. "비활성 물리적 어드레스들"이라고 할 수 있는, 더 이상 사용중이 아닌 물리적 어드레스들(예를 들어, 8-24)은 대시 기호 포맷팅으로 예시된다. "뱅크"로 표시된 컬럼은, 각각이 설명 목적만을 위해, 8개의 DIMM 어드레스들을 유지하는 메모리 뱅크들(40A, 40B, 및 40C)을 열거한다. 사실상, 메모리 뱅크들(40) 및 그것들의 메모리 어드레스들의 사이즈는 훨씬 더 클 수 있고, 메모리 컨트롤러(36)에 의해 조작될 수 있는 메모리의 임의의 사이즈 청크(예를 들어, 캐시 라인 또는 페이지)를 나타낼 수 있다는 것을 이해해야 한다. 셧다운될 메모리 뱅크(40)(예를 들어, 뱅크 1) 및 앞서 셧다운된 메모리 뱅크(40)가 대시 기호 포맷팅으로 예시된다. "DIMM 어드레스 (2 뱅크들)"로 표시된 컬럼은 도 11의 2-뱅크 메모리 맵핑 방식을 예시한다. "DIMM 어드레스 (1 뱅크)"로 표시된 컬럼은 활성 메모리 뱅크들(40A, 40B, 및 40C)의 수가 2로부터 1로 감소될 때, 특정 DIMM 어드레스들에 대한 활성 물리적 어드레스들의 재맵핑을 예시한다.
메모리 컨트롤러(36)는 도 10 및 12를 참조하여 위에서 논의한 방법들과 유사한 방식으로 메모리 맵핑 도표(140)에 개요가 설명된 메모리 맵핑 프로시저를 실행할 수 있다. 메모리 컨트롤러(36)는 2-뱅크 맵핑 방식에서, 셧다운될, 제2 메모리 뱅크(40)의 DIMM 어드레스들에, 맵핑된 사용중 물리적 어드레스들을 재맵핑하기 위해 다른 대안적인 동적 메모리 맵핑 함수를 이용할 수 있다. 대안적인 메모리 맵핑 함수는, 2-뱅크 방식에서 비활성 물리적 어드레스에 맵핑하는 DIMM 어드레스들을 재맵핑하는 동안, 사용중으로 남아 있을 메모리 뱅크(40) 상에 배치된 활성 물리적 어드레스들의 맵핑을 유지하는 임의의 적절한 함수일 수 있다. 메모리 재맵핑 도표(140)의 예에서, 메모리 뱅크 0은 활성을 유지할 것이고, 뱅크 0에서 DIMM 어드레스들에 맵핑된 활성 물리적 어드레스들(예를 들어, 0-7)의 그것은 변화하지 않을 수 있다. 활성 메모리 뱅크(40)의 DIMM 어드레스가 비활성 물리적 어드레스(예를 들어, 8-23)에 맵핑될 때, 메모리 컨트롤러(36)는 이들 DIMM 어드레스들을 온 더 플라이 재맵핑할 수 있다. 남아 있는 물리적 어드레스들에 대한 제2 대안적인 메모리 맵핑 함수는 다음의 관계식을 포함할 수 있다:
Figure 112012092854106-pct00012
여기서,
Figure 112012092854106-pct00013
Figure 112012092854106-pct00014
Figure 112012092854106-pct00015
위의 수학식들 10-13에서, 변수 ALT_DIMMAddr2_1은 1-뱅크 맵핑 방식에 대한 대안적인 DIMM 어드레스 맵핑을 나타내고, 변수 ALT_DIMMAddr3_2는 2-뱅크 맵핑 방식에 대한 대안적인 DIMM 어드레스 맵핑을 나타내고, ReducedMemory2_1은 남아있는 활성 메모리 뱅크들(40A, 40B, 및 40C)에 걸쳐서 이용가능한 새로 감소된 양의 DIMM 어드레스들을 나타낸다. 변수 BankReindex2_1은 대안적인 DIMM 어드레스 맵핑을 확인하기 위해 변수들 FirstBankEntries2_1, 및 FirstBankOffset2_1과 결합하여 이용된다. 이들 변수들을 결정함에 있어서 사용될 때, 변수 BankSize는 메모리 뱅크(40)당 물리적 어드레스들의 양을 나타내고, 변수 TotalBanks는 메모리 뱅크들(40A, 40B, 및 40C)의 총 수를 나타내고, 변수 ReducedBanks2_1은 일단 선택된 메모리 뱅크(40)(예를 들어, 뱅크 1)가 셧다운되면 남아 있는 메모리 뱅크들(40A, 40B, 및 40C)의 수를 나타낸다.
도 11을 참조하여 위에서 언급한 바와 같이, 2-뱅크 메모리 맵핑 방식 하에서, 물리적 어드레스 "4"는 여전히 DIMM 어드레스 "9"에 맵핑할 수 있다. 수학식들 10-13에 기초하여, 도 11에 도시된 바와 같이, 물리적 어드레스 "4"는 1-뱅크 메모리 맵핑 방식에서 DIMM 어드레스 "4"에 재맵핑될 수 있다. 유사하게, 2-뱅크 메모리 맵핑 방식에서 DIMM 어드레스 "6"에 맵핑된 물리적 어드레스 "2"는 1-뱅크 메모리 맵핑 방식에서 DIMM 어드레스 "6"에 맵핑된 채로 유지할 수 있다. 1-뱅크 메모리 재맵핑 모드에 진입한 후에, 메모리 컨트롤러(36)는 1-뱅크 메모리 맵핑 방식에서 재맵핑된 어드레스들에 남아 있는 활성 메모리 어드레스들을 전달하기 위해 복사 기능(142)을 수행할 수 있다. 복사 기능(142)은 위에서 논의한 복사 기능(122)과 유사한 방식으로 일어날 수 있다.
메모리 셧다운 프로세스는, 특정 실시예들에서, 특정 환경들 하에서 전력 관리 및/또는 열적 관리를 위해 전자 디바이스(10)에 의해 이용될 수 있다. 특히, 도 14는 전력 관리 및/또는 열적 관리를 위한 그러한 방법의 실시예를 설명하는 흐름도(150)를 예시한다. 제1 블록(152)에서, 전자 디바이스(10)는 유휴 상태에 들어갈 수 있거나 또는 온도 임계값을 초과할 수 있다. 어느 한 경우에, 메모리 컨트롤러(36), 프로세서(들)(12), 프로세서(들)(12)에서 실행되는 OS, 및/또는 OS에서 실행되는 소프트웨어는 전력을 절약하기 위해서 및/또는 부가적인 열이 발생되는 것을 방지하기 위해서 전력 소비가 감소되어야 함을 결정할 수 있다.
이와 같이, 블록(154)에서, OS는 다양한 측정 중 임의의 것을 이용하여 메모리 사용을 감소시킬 수 있고, 이것은 디스플레이(18) 상의 그래픽의 프레임 레이트를 제한하는 것, 메모리의 워킹 세트를 더 작은 메모리 영역들 내로 맞도록 통합하는 것, 및/또는 언바운드 메모리(unbound memory)를 감소시키는 것을 포함할 수 있다. 부가적으로 또는 대안적으로, 전자 디바이스(10)는 AC 전력으로부터 배터리 전력으로 전원(26)을 전환할 때 유휴 또는 감소된 메모리 사용 상태에 들어갈 수 있고, 이것은 비디오 프레임 레이트를 자동으로 감소시키는 것을 수반할 수 있다. 특정 실시예들에서, 전자 디바이스(10)는 메모리 데이터를 비휘발성 스토리지(16)에 백업하고, 그 후에 데이터가 대응하는 더 높은 차수의 물리적 어드레스들이 더 이상 사용중이 아님을 표시함으로써 메모리 사용을 줄일 수 있다.
그 후에, 블록(156)에서, 메모리 컨트롤러(36)는 전술한 메모리 재맵핑 프로시저들 중 하나를 수행하고 메모리(14)의 일부분(예를 들어, 뱅크 2)을 셧다운함으로써, 전력을 보존하고 및/또는 열을 줄인다. 일부 실시예들에서, 셧다운될 메모리 뱅크(40)(예를 들어, 뱅크 2) 상의 특정 DIMM 어드레스들은 메모리 뱅크(40)가 셧다운되기 전에 캐시로서 사용될 수 있다.
도 8을 참조하여 위에서 논의한 바와 같이, 전력을 보존하기 위해 비활성화되는 것에 부가하여, 메모리 뱅크들(40A, 40B, 및 40C)은 또한 이용가능한 메모리를 증가시키기 위해 재활성화될 수 있다. 도 15 및 16은 더 적은 메모리 뱅크들(40A, 40B, 및 40C)로부터 더 많은 메모리 뱅크들(40A, 40B, 및 40C)로 온 더 플라이 재맵핑하기 위한 메모리 재맵핑 도표들을 예시한다. 먼저 도 15를 보면, 메모리 재맵핑 도표(160)는 1-뱅크 메모리 맵핑 방식으로부터 2-뱅크 메모리 맵핑 방식으로 전이하기 위한 프로세스를 예시한다. "물리적 어드레스"로 표시된 컬럼은 물리적 어드레스들을 열거한다. "비활성 물리적 어드레스들"이라고 할 수 있는, 사용중이 아닌 물리적 어드레스들(예를 들어, 16-23)은 대시 기호 포맷팅으로 예시된다. "뱅크"로 표시된 컬럼은 설명 목적만을 위해, 각각이 8개의 DIMM 어드레스들을 유지하는 메모리 뱅크들(40A, 40B, 및 40C)을 열거한다. 사실상, 메모리 뱅크들(40) 및 그것들의 메모리 어드레스들의 사이즈는 훨씬 더 클 수 있고, 메모리 컨트롤러(36)에 의해 조작될 수 있는 메모리의 임의의 사이즈 청크(예를 들어, 캐시 라인 또는 페이지)를 나타낼 수 있다는 것을 이해해야 한다. "DIMM 어드레스 (2 뱅크들)"로 표시된 컬럼은 2-뱅크 메모리 맵핑 방식을 예시하고, "DIMM 어드레스 (1 뱅크)"로 표시된 컬럼은 1-뱅크 메모리 맵핑 방식을 예시한다.
전자 디바이스(10)가 1-뱅크 메모리 맵핑 방식으로부터 2-뱅크 메모리 맵핑 방식으로 전이할 때, 메모리 컨트롤러(36)는 복사 기능(162)을 수행할 수 있다. 메모리 컨트롤러(36)는 2-뱅크 메모리 맵핑 방식에서, 뱅크 1의 DIMM 어드레스들에 맵핑하는 물리적 어드레스들과 연관된 데이터를 뱅크 0의 어떤 DIMM 어드레스들이 현재 저장하는지를 결정할 수 있다. 메모리 컨트롤러(36)는 이들 DIMM 어드레스들로부터 판독할 수 있고, 그것들의 내용들을 적어도 2-뱅크 메모리 맵핑 방식의 이들 물리적 어드레스들과 연관된 DIMM 어드레스들에 기입할 수 있다. 특정 실시예들에서, 메모리 컨트롤러(36)는 1-뱅크 메모리 맵핑 방식 및 2-뱅크 메모리 맵핑 방식의 DIMM 어드레스들 둘다에 그러한 데이터를 기입할 수 있다.
다음으로 도 16을 보면, 메모리 재맵핑 도표(170)는 2-뱅크 메모리 맵핑 방식으로부터 3-뱅크 메모리 맵핑 방식으로 전이하기 위한 프로세스를 예시한다. "물리적 어드레스"로 표시된 컬럼은 물리적 어드레스들을 열거한다. "뱅크"로 표시된 컬럼은 설명 목적만을 위해, 각각이 8개의 DIMM 어드레스들을 유지하는 메모리 뱅크들(40A, 40B, 및 40C)을 열거한다. 사실상, 메모리 뱅크들(40) 및 그것들의 메모리 어드레스들의 사이즈는 훨씬 더 클 수 있고, 메모리 컨트롤러(36)에 의해 조작될 수 있는 메모리의 임의의 사이즈 청크(예를 들어, 캐시 라인 또는 페이지)를 나타낼 수 있다는 것을 이해해야 한다. "DIMM 어드레스 (3 뱅크들)"로 표시된 컬럼은 3-뱅크 메모리 맵핑 방식을 예시하고, "DIMM 어드레스 (2 뱅크들)"로 표시된 컬럼은 2-뱅크 메모리 맵핑 방식을 예시한다.
전술한 방식으로, 전자 디바이스(10)가 2-뱅크 메모리 맵핑 방식으로부터 3-뱅크 메모리 맵핑 방식으로 전이할 때, 메모리 컨트롤러(36)는 복사 기능(172)을 수행할 수 있다. 메모리 컨트롤러(36)는 3-뱅크 메모리 맵핑 방식에서, 뱅크 2의 DIMM 어드레스들에 맵핑하는 물리적 어드레스들과 연관된 데이터를 뱅크들 0 및 1의 어떤 DIMM 어드레스들이 현재 저장하는지를 결정할 수 있다. 메모리 컨트롤러(36)는 이들 DIMM 어드레스들로부터 판독할 수 있고, 그것들의 내용들을 적어도 3-뱅크 메모리 맵핑 방식의 이들 물리적 어드레스들과 연관된 DIMM 어드레스들에 기입할 수 있다. 특정 실시예들에서, 메모리 컨트롤러(36)는 2-뱅크 메모리 맵핑 방식과 3-뱅크 메모리 맵핑 방식 둘다에 대해 이들 물리적 어드레스들과 연관된 DIMM 어드레스들 둘다에 그러한 데이터를 기입할 수 있다.
도 15 및 16을 둘다 참조하면, 특정 실시예들에서, 메모리 컨트롤러(36)는 셧다운 메모리 뱅크(40)(예를 들어, 뱅크 2 또는 뱅크 1)로부터 데이터를 새로 재맵핑된 메모리 뱅크들 0 및/또는 1로, 파괴적으로 복사하기보다는, 스왑할 수 있다는 것을 기억해야 한다. 이러한 실시예들에 대해, 셧다운된 메모리 뱅크(40)는 저전력 셀프 리프레시 모드에 놓여졌을 수 있다. 이와 같이, 셧다운 메모리 뱅크(40)는 그의 물리적 어드레스들에 저장된 데이터를 보존하였을 수 있다.
이 데이터는 (예를 들어, 도 15 또는 16에 따라) 셧다운 메모리 뱅크(40)가 재활성화되고 재맵핑될 때 복구될 수 있다. 예를 들어, 메모리 뱅크 0 또는 1 상의 하드웨어 메모리 위치들로부터 메모리 뱅크 1 또는 2로 특정 물리적 어드레스들을 파괴적으로 복사하기보다는, 이러한 데이터는 그 대신에 스왑될 수 있다. 파괴적인 복사 기능보다는 그러한 스왑 기능을 수행하는 것이 스왑이 일어나고 있는 동안 스왑되고 있는 물리적 어드레스들을 유지하기 위해 부가적인 메모리 버퍼(들)를 수반할 수 있지만, 스왑핑은 비휘발성 스토리지(16)로부터 그러한 데이터를 복구할 필요 없이 이전에 액세스 불가능한 데이터가 다시 액세스 가능하게 되도록 할 수 있다.
일부 실시예들에서, 전자 디바이스(10)는 도 17의 흐름도(180)에 예시된 바와 같이, 특정 상황들에서 전자 디바이스(10)에 의해 이용되는 전력의 양을 줄이기 위해 메모리 사용 요구들과 성능 요구들의 균형을 잡을 수 있다. 제1 블록(182)에서, 메모리 컨트롤러(36), 프로세서(들)(12), 프로세서(들)(12)에서 실행되는 OS, 및/또는 OS에서 실행되는 소프트웨어는 전자 디바이스(10)의 메모리 사용 및 성능 요구들을 평가할 수 있다. 이것은 예를 들어, 현재 사용중인 메모리의 양을 모니터링하고 및/또는 전자 디바이스(10)에 의해 추적되는 성능 카운터들을 이용함으로써 실현될 수 있다. 결정 블록들(184 및 186)에 의해 언급한 바와 같이, 성능 요구들이 낮고 메모리 요구들이 낮은 경우, 전자 디바이스(10)는 블록(188)에서 전술한 기법들에 따라 메모리 뱅크들(40A, 40B, 및 40C) 중 하나 이상을 파워 다운하기 위해 재맵핑 프로시저들을 착수할 수 있다. 성능 요구들이 낮고 메모리 요구들이 높은 경우, 전자 디바이스(10)는 블록(190)에서 메모리 뱅크들(40A, 40B, 및 40C) 및/또는 메모리 버스들(42, 44, 및 46)의 클록 주파수들을 줄일 수 있다. 부가적으로 또는 대안적으로, 전자 디바이스(10)는 전술한 재맵핑 및 메모리 셧다운 기법들 중 하나를 수행하기 전에, 사용중인 메모리의 양을 줄이기 위해 도 14를 참조하여 전술한 시스템 유휴 프로시저를 수행할 수 있다.
결정 블록들(184 및 192)에 의해 표시된 바와 같이, 전자 디바이스(10)의 성능 요구는 높지만 메모리 사용은 낮은 경우, 블록(194)에 의해 도시된 바와 같이, 메모리(14)는 재맵핑될 수 있고, 부가적인 메모리 뱅크(40A, 40B, 또는 40C)가 재활성화될 수 있다. 부가적인 DIMM 어드레스들 중 전부가 전자 디바이스(10)에 의해 이용될 수 있는 것은 아니더라도, 부가적인 메모리 뱅크들(40)에 걸쳐서 메모리 데이터를 분포시킴으로써 메모리 액세스 대역폭은 증가될 수 있다. 메모리 컨트롤러(36)는 도 15 및/또는 16을 참조하여 전술한 바와 같은 방식으로 재맵핑 프로시저를 수행할 수 있다. 성능 요구가 높고 메모리 사용이 높은 경우, 결정 블록들(184 및 192)에 의해 표시된 바와 같이, 모든 메모리 뱅크들(40A, 40B, 및 40C)이 블록(196)에 의해 도시된 바와 같이 활성 및 사용중으로 될 수 있다.
성능은 메모리 뱅크들(40)에 대한 액세스들의 특정 타입들의 수를 줄임으로써 더 향상될 수 있다. 특히, DIMM 어드레스들은 로우 어드레스 선택(row address selection; RAS), 컬럼 어드레스 선택(column address selection; CAS), 및 디바이스 선택(device selection; DEV)을 통해 액세스 가능할 수 있다. RAS에서의 변화들을 통해 메모리 로우들을 변화시키는 것은 CAS에서의 변화들을 통해 메모리 컬럼들을 변화시키는 것보다 큰 대기 시간을 생성할 수 있기 때문에, RAS 변화들의 수를 줄이고 CAS 변화들의 수를 증가시키는 온 더 플라이 메모리 재맵핑 기법들이 이용될 수 있다. 이러한 메모리 재맵핑을 수행하기 위한 기법들은 아래 더 상세히 논의된다.
메모리 뱅크들(40) 중 하나 이상이 셧다운될 때 메모리 뱅크들(40) 사이의 불필요한 복사 및 로우 변화들을 줄이기 위해서, 메모리 컨트롤러(36)는 프로세서(들)(12)에 의해 특정 메모리가 요구될 때 특정 어드레스 비트들을 재맵핑할 수 있다. 단지 예시적으로, 도 18에 예시된 바와 같이, 256 캐시 라인 어드레스들의 어드레스 공간에 대응하는 캐시 라인 어드레스(200)는, 중요성(significance)의 순서로 A0 내지 A7로 라벨링된, 8 비트를 포함할 수 있다. 사실상, 캐시 라인 어드레스들은 더 길거나 더 짧을 수 있다는 것을 알아야 한다. 실제로, 도 18, 19a-c, 21a-e, 및 22a-b에 예시된 본 실시예들은 설명의 편의성만을 위해 256 캐시 라인들의 어드레스 공간을 인코딩하기 위해 8 비트를 포함하도록 도시된다. 하나 또는 2개의 메모리 뱅크(40)가 파워 오프될 수 있게 하는 시스템의 경우, DRAM 디바이스들 사이의 데이터의 복사가 감소되어야 한다. 예를 들어, 메모리 뱅크들(40)의 메모리의 1/2이 파워 다운될 것이면, 파워 다운이 일어날 때 메모리의 1/2보다 크지 않게 재배치되어야 한다.
예를 들어, 전자 디바이스(10)는 1, 2, 또는 4 메모리 뱅크들(40)에 전력이 공급된 채로 유지되는 3개의 상이한 구성으로 동작할 수 있고, 각각의 구성은 이용가능한 메모리의 양을 2배로 만든다(예를 들어, 각각의 메모리 뱅크(40)는 동일한 사이즈로 되어 있다). 각각의 구성에서, 불필요한 복사 동작들은 3개의 상이한 어드레스 맵핑 방식들을 적용함으로써 회피될 수 있다. 이들 방식들은 모드에 상관없이 로우 변화들을 줄이면서, 각각의 모드에서 인터리브(interleave)하는 고도의 메모리 뱅크(40)를 가능하게 할 수 있다.
일 실시예에서, 메모리 컨트롤러(36)는 구성이 변화할 때마다 맵핑 변화들을 2비트로만 제한하는 방식으로 캐시 라인 어드레스(200)를 맵핑할 수 있다. 도 19-a-c는 동일한 사이즈의 4개의 메모리 뱅크(40)로 시작하는 구성에 대한 맵핑들을 나타낸다. 오직 예시적으로, 도 19a-c에 예시된 바와 같이, 256 캐시 라인 어드레스들의 어드레스 공간에 대응하는 캐시 라인 어드레스(200)는, 중요성의 순서로 A0 내지 A7로 라벨링된, 8 비트를 포함할 수 있다. 사실상, 캐시 라인 어드레스들은 더 길거나 더 짧을 수 있다는 것을 알아야 한다. 실제로, 도 18, 19a-c, 21a-e, 및 22a-b에 예시된 본 실시예들은 설명의 편의성만을 위해 256 캐시 라인들의 어드레스 공간을 인코딩하기 위해 8 비트를 포함하도록 도시된다. 또한, 설명의 편의성만을 위해, 도 21a-c 각각의 캐시 라인 어드레스(200)는 64 캐시 어드레스들을 맵핑한다.
도 19a는 4개의 메모리 뱅크들(40) 모두가 활성일 때의 구성을 나타내고, 도 19b는 메모리 뱅크들(40) 중 2개가 활성일 때의 구성을 나타내고, 도 19c는 메모리 뱅크들(40) 중 1개만이 활성일 때의 구성을 나타낸다. 도 19a-c에서, R0-R2는 RAS 비트들에 대응하고, C0-C2는 CAS 비트들에 대응하고, D0 및 D1은 DEV 비트들에 대응한다. 특정 실시예들에서, 4개의 메모리 뱅크들(40) 모두가 활성일 때, 그 모드에 대한 시스템 메모리 맵은 캐시 어드레스들(128-255)을 2개의 가장 빠른 메모리 뱅크들(40)에 그리고 캐시 어드레스들(0-63 및 64-127) 각각을 더 느린 메모리 뱅크들(40)에 맵핑할 수 있다. 동일한 사이즈의 4개의 메모리 뱅크들(40) 중 2개만이 활성일 때, 그 모드에 대한 시스템 메모리 맵은 캐시 어드레스들(0-63 및 64-127) 각각을 더 느린 메모리 뱅크들(40)에 맵핑할 수 있고, 4개의 메모리 뱅크들(40) 중 1개만이 활성일 때, 그 모드에 대한 시스템 메모리 맵은 캐시 어드레스들(0-63)을 메모리 뱅크들(40) 중 가장 느린 것에 맵핑할 수 있다.
도 19a-c의 맵핑들로부터 명백한 바와 같이, 각각의 구성 변화에서, 비트들 중 하나가 파워 다운될 시스템 어드레스 맵의 일부분에 재배치될 수 있다. DEV 비트들 D0 및 D1은 4개의 메모리 뱅크들(40) 모두가 활성일 때(도 19a), 인터리브하는 최대 메모리 뱅크(40)를 실현하기 위해서 더 낮은 차수의 비트들에 상주하고(reside), 메모리 뱅크(40)의 파워 다운은 메모리 뱅크(40)가 더 이상 액세스될 수 없음을 의미하기 때문에, 불능으로 된 메모리 뱅크(40)에 대한 액세스들이 일어나지 않도록 하기 위해서, DEV 비트들 중 하나가 더 낮은 차수의 비트들로부터 더 이상 액세스되지 않을 더 높은 차수의 비트들 중 하나로 재배치될 수 있다(도 19b).
로우 변화들을 줄이기 위해서, DEV 비트와 교환되어야 하는 비트는 CAS 비트이어야 하고, 이것은 CAS 비트가 이전에 캐시 어드레스의 더 높은 차수의 비트들을 이용했었다는 것을 의미한다. 그러므로, 복사를 줄이기 위해서, RAS는 달리 실현될 수 있는 인에이블된 복수의 메모리 뱅크들(40)로 스트리밍하는 동안 더욱 빈번하게 변화해야 하지만, 어떠한 경우에도 단일 메모리 뱅크(40)만이 인에이블될 때보다 더욱 빈번하게 변화해야 한다. 그러므로, 도 19a의 4-메모리 뱅크 구성으로부터 도 19b의 2-메모리 뱅크 구성으로 변화함에 있어서, 캐시 라인 어드레스 비트들 A1 및 A7이 스왑된다. 도 19b의 2-메모리 뱅크 구성으로부터 도 19c의 1-메모리 뱅크 구성으로 변화함에 있어서, 캐시 라인 어드레스 비트들 A1 및 A6이 스왑된다.
따라서, 도 19a-c의 맵핑은 캐시 라인 어드레스들과 시스템 어드레스들 사이에 다음의 변환을 일으키고, 여기서, 표기법 ([#],[#],[#])[#]은 ([RAS],[CAS],[DEV])[시스템 어드레스]에 대응한다.
Figure 112012092854106-pct00016
표 1에서 볼 수 있는 바와 같이, 모드에 상관없이, 로우 변화들 사이에 8개의 액세스가 존재한다.
일부 실시예들에서, 전자 디바이스(10)는 오직 3개의 메모리 뱅크(40)를 가질 수 있고, 이 중 하나의 메모리 뱅크(40)는 남아있는 2개의 메모리 뱅크(40)보다 더 많은 메모리를 가질 수 있다. 일부 실시예들에서, 더 빠른 메모리 뱅크(40)는 2개의 더 느린 메모리 뱅크(40)의 결합된 용량과 동일한 용량을 가질 수 있다(예를 들어, 빠른 메모리 뱅크(40)는 2개의 남아있는 느린 메모리 디바이스들(40) 각각의 용량의 2배를 가질 수 있다). 이러한 실시예들에서, 위의 설계 전략은 메모리 뱅크들(40) 중 더 빠른 것에서 부가적인 CAS 비트(예를 들어, CAS[3](C3))에 DEV[0](D0)을 맵핑함으로써 여전히 이용될 수 있다.
특정 메모리가 파워 다운될 때 온 더 플라이 메모리 재맵핑을 실행하기 위해서, 전자 디바이스(10)는 도 20의 흐름도(210)에 의해 개시되는 바와 같은 프로세스를 따를 수 있다. 흐름도(210)는 전자 디바이스(10)가 풀 메모리 사용 모드에서 동작하고 있을 때 시작할 수 있다(예를 들어, 4개의 메모리 뱅크(40)가 존재하는 경우, 모든 4개의 메모리 뱅크(40)가 활성일 수 있다). 따라서, 흐름도(210)가 시작할 때, 메모리 컨트롤러(36)는 도 19a에 예시된 바와 같은 방식에 따라 메모리 뱅크들(40)을 맵핑할 수 있다. 전자 디바이스(10)는 위에 더 상세히 논의된 바와 같이, 임의의 적절한 기법을 이용하여 전자 디바이스(10)에 이용가능한 메모리(14)의 절반을 파워 다운하도록 준비할 수 있다(블록 212). 더 빠른 메모리 뱅크들(40)은 통상적으로 더 큰 양의 전력을 소비할 수 있기 때문에, 전자 디바이스(10)는 일반적으로 처음에 가장 빠른 메모리 뱅크(들)(40)를 파워 다운하도록 선택할 수 있다.
메모리 뱅크(들)(40)를 파워 다운하기 전에, 메모리 컨트롤러(36)는 캐시 라인 어드레스(200)의 2 비트만을 변화시키는 방식에 따라(예를 들어, 도 19b에 예시된 바와 같이) 캐시 라인 어드레스들(200)을 재맵핑할 수 있다(블록 214). 그 후, 메모리 컨트롤러(36)는 선택된 메모리 뱅크(들)(40)를 파워 다운하기 전에(블록 216), 위에서 논의된 방식들로, 파워 다운될 메모리 뱅크(들)(40)로부터 활성을 유지할 메모리 뱅크들(40)로 특정 데이터를 복사할 수 있다.
적절할 때, 전자 디바이스(10)는 위에 논의된 바와 같은, 임의의 적절한 기법을 이용하여 남아있는 메모리(14)의 절반을 파워 다운하도록 결정할 수 있다(블록 218). 더 빠른 메모리 뱅크들(40)은 통상적으로 더 큰 양의 전력을 소비할 수 있기 때문에, 전자 디바이스(10)는 일반적으로 남아있는 메모리 뱅크(들)(40) 중 더 빠른 것을 파워 다운하도록 선택할 수 있다. 예시적으로, 전자 디바이스(10)가 동일한 사이즈의 총 4개의 메모리 뱅크들(40)을 갖는 경우, 가장 느린 메모리 뱅크(40)만이 활성을 유지하도록 선택될 수 있다. 메모리 컨트롤러(36)는 다음으로 캐시 라인 어드레스(200)의 2 비트만을 변화시키는 방식에 따라(예를 들어, 도 19c에 예시된 바와 같이) 캐시 라인 어드레스들(200)을 재맵핑할 수 있다(블록 220). 그 후, 메모리 컨트롤러(36)는 선택된 메모리 뱅크(들)(40)를 파워 다운하기 전에, 위에서 논의된 방식들로, 파워 다운될 메모리 뱅크(들)(40)로부터 활성을 유지할 메모리 뱅크(들)(40)로 특정 데이터를 복사할 수 있다(블록 222).
특정 다른 실시예들에서, 전자 디바이스(10)는 각각의 모드가 시스템 메모리로부터 동일한 양의 메모리를 가산 또는 감산하는 기법을 이용할 수 있다. 예를 들어, 전자 디바이스(10)의 특정 실시예들은 동일한 용량의 3개의 메모리 뱅크들(40)을 가질 수 있다. 복사를 줄이기 위해서, 2개의 어드레스 맵핑 비트들만이 위에서 논의된 것들과 유사한 방식으로 모드들 사이에 변화될 수 있다.
예를 들어, 도 21a-e는 동일한 사이즈의 3개의 메모리 뱅크(40)로 시작하는 구성에 대한 맵핑들을 나타낸다. 특히, 도 21a-c는 3개의 메모리 뱅크들(40) 모두가 활성일 때의 구성의 특정 변형들을 나타내고, 도 21d는 메모리 뱅크들(40) 중 2개가 활성일 때의 구성을 나타내고, 도 21e는 메모리 뱅크들(40) 중 1개만이 활성일 때의 구성을 나타낸다. 도 21a-e에서, R0-R2는 RAS 비트들에 대응하고, C0-C2는 CAS 비트들에 대응하고, D0 및 D1은 DEV 비트들에 대응한다. 오직 예시적으로, 도 21a-e에 예시된 바와 같이, 256 캐시 라인 어드레스들의 어드레스 공간에 대응하는 캐시 라인 어드레스(200)는, 중요성의 순서로 A0 내지 A7로 라벨링된, 8 비트를 포함할 수 있다. 사실상, 캐시 라인 어드레스들은 더 길거나 더 짧을 수 있다는 것을 알아야 한다. 실제로, 도 18, 19a-c, 21a-e, 및 22a-b에 예시된 본 실시예들은 설명의 편의성만을 위해 256 캐시 라인들의 어드레스 공간을 인코딩하기 위해 8 비트를 포함하도록 도시된다. 또한, 설명의 편의성만을 위해, 도 21a-c 각각의 캐시 라인 어드레스(200)는 64 캐시 어드레스들을 맵핑한다. 즉, 특정 실시예들에서, 3개의 메모리 뱅크들(40) 모두가 활성일 때, 그 모드에 대한 시스템 메모리 맵은 캐시 어드레스들(128-191)을 가장 빠른 메모리 뱅크(40)에 그리고 캐시 어드레스들(0-63 및 64-127) 각각을 더 느린 메모리 뱅크들(40)에 맵핑할 수 있다. 동일한 사이즈의 3개의 메모리 뱅크들(40) 중 2개만이 활성일 때, 그 모드에 대한 시스템 메모리 맵은 캐시 어드레스들(0-63 및 64-127) 각각을 더 느린 메모리 뱅크들(40)에 맵핑할 수 있고, 3개의 메모리 뱅크들(40) 중 1개만이 활성일 때, 그 모드에 대한 시스템 메모리 맵은 캐시 어드레스들(0-63)을 메모리 뱅크들(40) 중 가장 느린 것에 맵핑할 수 있다.
4-메모리 뱅크 구성에서 캐시 어드레스들 전부에 대해 단일 맵핑(도 19a)이 적용되는, 도 19a-c의 구성과 달리, 3개의 메모리 뱅크들(40) 모두가 활성일 때, 특정 캐시 라인 어드레스(200) 비트들의 상태들에 따라 상이한 맵핑이 적용된다. 특히, 3개의 메모리 뱅크들(40) 모두가 활성일 때, 도 21a에 따른 맵핑은 캐시 라인 어드레스(200) 비트들 A7=1 및 A1=1일 때 적용될 수 있고, 도 21b에 따른 맵핑은 캐시 라인 어드레스(200) 비트들 A7=0 및 A1=1일 때 적용될 수 있고, 도 21c에 따른 맵핑은 캐시 라인 어드레스(200) 비트들 A7=0 및 A1=0일 때 적용될 수 있다.
처음에는, 모드 변화 중에 2개의 캐시 라인 어드레스(200) 비트들의 맵핑을 변화시키는 것만의 규칙이 위반된 것으로 보일 수 있다. 도 21b 및 21d에 도시된 바와 같이, A7=0 및 A1=1일 때 3-메모리 뱅크 구성과 2-메모리 뱅크 구성 사이에 전환할 때, A7, A6, A2, 및 A1의 맵핑들은 모두 변화하였다. 그러나, A7 및 A1의 값들이 알려져 있기 때문에(예를 들어, A7=0 및 A1=1), 도 22a 및 22b에 각각 도시된 바와 같이 고정된 값들이 대체될 수 있다. 도 22a 및 22b로부터, 오직 A6 및 A0이 3-메모리 뱅크 구성과 2-메모리 뱅크 구성 사이의 맵핑들을 변화하였음을 볼 수 있다.
도 21a-e의 맵핑은 캐시 라인 어드레스들과 시스템 어드레스들 사이에 다음의 변환을 일으키고, 여기서, 표기법 ([#],[#],[#])[#]은 ([RAS],[CAS],[DEV])[시스템 어드레스]에 대응한다.
Figure 112012092854106-pct00017
위의 표 1에서와 같이, 표 2에서는, 모드에 상관없이, 로우 변화들 사이에 8개의 액세스가 존재한다.
1/3 증분들에서 메모리가 파워 다운될 때 온 더 플라이 메모리 재맵핑을 실행하기 위해서, 전자 디바이스(10)는 도 23의 흐름도(230)에 의해 개시되는 바와 같은 프로세스를 따를 수 있다. 흐름도(230)는 전자 디바이스(10)가 풀 메모리 사용 모드에서 동작하고 있을 때 시작할 수 있다(예를 들어, 동일한 사이즈의 3개의 메모리 뱅크(40)가 존재하는 경우, 모든 3개의 메모리 뱅크(40)가 활성일 수 있다). 따라서, 흐름도(230)가 시작할 때, 메모리 컨트롤러(36)는 캐시 라인 어드레스(200) 비트들 A7 및 A1의 상태에 의존하여, 도 21a-c에 예시된 바와 같은 방식에 따라 메모리 뱅크들(40)을 맵핑할 수 있다. 전자 디바이스(10)는 위에 더 상세히 논의되는 바와 같이, 임의의 적절한 기법을 이용하여 전자 디바이스(10)에 이용가능한 메모리(14)의 1/3을 파워 다운하도록 준비할 수 있다(블록 232). 더 빠른 메모리 뱅크들(40)은 통상적으로 더 큰 양의 전력을 소비할 수 있기 때문에, 전자 디바이스(10)는 일반적으로 처음에 가장 빠른 메모리 뱅크(들)(40)를 파워 다운하도록 선택할 수 있다.
메모리 뱅크(들)(40)를 파워 다운하기 전에, 메모리 컨트롤러(36)는 캐시 라인 어드레스(200)의 2 비트만을 변화시키는 방식에 따라(예를 들어, 도 21d에 예시된 바와 같이 그리고 위에서 입증된 바와 같이) 캐시 라인 어드레스들(200)을 재맵핑할 수 있다(블록 234). 그 후, 메모리 컨트롤러(36)는 선택된 메모리 뱅크(들)(40)를 파워 다운하기 전에, 위에서 논의된 방식들로, 파워 다운될 메모리 뱅크(들)(40)로부터 활성을 유지할 메모리 뱅크들(40)로 특정 데이터를 복사할 수 있다(블록 236).
적절할 때, 전자 디바이스(10)는 위에 논의된 바와 같은, 임의의 적절한 기법을 이용하여 총 메모리(14)의 1/3만이 남아있도록 남아있는 메모리(14)의 절반을 파워 다운하는 것을 결정할 수 있다(블록 218). 더 빠른 메모리 뱅크들(40)은 통상적으로 더 큰 양의 전력을 소비할 수 있기 때문에, 전자 디바이스(10)는 일반적으로 남아있는 메모리 뱅크(들)(40) 중 더 빠른 것을 파워 다운하도록 선택할 수 있다. 예시적으로, 전자 디바이스(10)가 동일한 사이즈의 총 3개의 메모리 뱅크들(40)을 갖는 경우, 가장 느린 메모리 뱅크(40)만이 활성을 유지하도록 선택될 수 있다. 메모리 컨트롤러(36)는 다음으로 캐시 라인 어드레스(200)의 2 비트만을 변화시키는 방식에 따라(예를 들어, 도 21e에 예시된 바와 같이) 캐시 라인 어드레스들(200)을 재맵핑할 수 있다(블록 220). 그 후, 메모리 컨트롤러(36)는 선택된 메모리 뱅크(들)(40)를 파워 다운하기 전에, 위에서 논의된 방식들로, 파워 다운될 메모리 뱅크(들)(40)로부터 활성을 유지할 메모리 뱅크(들)(40)로 특정 데이터를 복사할 수 있다(블록 222).
전술한 특정 실시예들은 예시적으로 도시되었고 이들 실시예들은 다양한 수정들 및 대안적인 형태들을 허용할 수 있다는 것을 이해해야 한다. 예를 들어, 본원에 예시적으로 설명된 기법들은 유사하게 다양한 다른 양의 메모리에 적용할 수 있다. 즉, 전술한 기법들은 4 또는 그보다 많은 메모리 뱅크(40)로부터 3 또는 그보다 적은 메모리 뱅크로의 온 더 플라이 메모리 맵핑 및 재맵핑을 수행하기 위해 적용될 수도 있다. 또한, 개별적으로 제어가능한 메모리 뱅크들(40)에 부가하여, 별개로 비활성화될 수 있는(메모리의 어느 부분들은 비활성화될 수 있고, 다른 부분들은 활성을 유지하는) 임의의 사이즈의 임의의 메모리가 이용될 수 있다는 것을 알아야 한다. 부가적으로, 예를 들어, 메모리 맵핑 모드들 사이에 전이할 때, 복사는 전자 디바이스(10)의 오퍼레이팅 시스템(OS) 또는 소프트웨어로부터 숨겨진 방식으로 메모리 컨트롤러(36)에 의해 완료될 수 있거나, 또는 복사는 각각의 복사가 원자적이면, OS 또는 소프트웨어에 의해 제어되는 방식으로 완료될 수 있다(예를 들어, 제1 메모리 맵핑에서 제1 DIMM 어드레스로부터의 판독 다음에 바로 제1 및 제2 메모리 맵핑 둘다의 DIMM 어드레스들에의 기입들이 올 수 있다). 청구항들은 개시된 특정 형태들로 한정되도록 의도되지 않으며, 오히려 이 개시의 사상 및 범위 내에 있는 모든 수정들, 등가물들, 및 대안들을 커버하도록 의도된다는 것을 더 이해해야 한다.

Claims (30)

  1. 전자 디바이스로서,
    하드웨어 메모리 위치들에 데이터를 저장하도록 구성되는 복수의 메모리 뱅크들 - 상기 복수의 메모리 뱅크들 중 적어도 하나의 메모리 뱅크는, 상기 복수의 메모리 뱅크들 중 적어도 다른 메모리 뱅크가 활성으로 남아 있는 동안에 비활성화하도록 구성됨 -;
    물리적 메모리 어드레스들에 대한 메모리 요구들을 통해 상기 데이터를 요구하도록 구성되는 하나 이상의 프로세서들;
    상기 전자 디바이스의 성능의 측정치를 표시하도록 구성되는 적어도 하나의 카운터 - 상기 성능의 측정치는 상기 하나 이상의 프로세서들의 활동 레벨을 포함함 - ; 및
    상기 복수의 메모리 뱅크들과 상기 하나 이상의 프로세서들 사이에 통신가능하게 삽입된 메모리 컨트롤러
    를 포함하고,
    상기 메모리 컨트롤러는, 상기 하나 이상의 프로세서들로부터 상기 물리적 메모리 어드레스들에 대한 메모리 요구들을 수신하고, 상기 복수의 메모리 뱅크들 중 제1 개수가 활성인 경우에는 제1 메모리 맵핑 함수(memory mapping function)를 이용하여 상기 물리적 메모리 어드레스들을 상기 하드웨어 메모리 위치들로 변환하고, 상기 복수의 메모리 뱅크들 중 제2 개수가 활성인 경우에는 제2 메모리 맵핑 함수를 이용하여 상기 물리적 메모리 어드레스들을 상기 하드웨어 메모리 위치들로 변환하고, 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크가 비활성화될 경우에, 비활성화될 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크로부터 상기 복수의 메모리 뱅크들 중 활성인 나머지 메모리 뱅크 중 선택된 메모리 뱅크로 데이터를 복사하지만, 상기 복수의 메모리 뱅크들 중 상기 활성인 나머지 메모리 뱅크 중 임의의 2개의 메모리 뱅크들 사이에는 데이터를 복사하지 않고, 상기 복수의 메모리 뱅크들 중 활성인 나머지 메모리 뱅크 중 선택된 메모리 뱅크로부터 비활성화될 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크로 데이터를 복사하고, 비활성화될 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크를 셀프 리프레시 모드(self-refesh mode)에 진입하게 함으로써 비활성화될 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크를 비활성화하도록 구성되며,
    상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크가 비활성화되는 것으로 결정하는 것은 상기 적어도 하나의 카운터에 의해 표시되는 성능의 측정치에 의존하는, 전자 디바이스.
  2. 제1항에 있어서,
    상기 복수의 메모리 뱅크들 중 상기 제1 개수는 3의 배수(multiple of three)의 메모리 뱅크들을 포함하고, 상기 제1 메모리 맵핑 함수는, 연속된 논리적 메모리 어드레스들과 연관된 2개의 물리적 어드레스들이 상기 복수의 메모리 뱅크들 중 단일의 하나의 메모리 뱅크에 맵핑되지 않게, 상기 물리적 어드레스들을 상기 하드웨어 메모리 위치들에 맵핑하도록 구성되는 전자 디바이스.
  3. 제1항에 있어서,
    상기 복수의 메모리 뱅크들 중 상기 제2 개수는 상기 복수의 메모리 뱅크들 중 상기 제1 개수보다 적은 수를 포함하고, 상기 제2 메모리 맵핑 함수는, 상기 복수의 메모리 뱅크들 중 상기 활성인 나머지 메모리 뱅크 각각의 적어도 하나의 하드웨어 메모리 위치가, 상기 제1 메모리 맵핑 함수 하에서, 비활성화될 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크의 하드웨어 메모리 위치에 맵핑되는 적어도 하나의 물리적 어드레스에 맵핑되게, 상기 물리적 어드레스들을 상기 하드웨어 메모리 위치들에 맵핑하도록 구성되는 전자 디바이스.
  4. 제1항에 있어서,
    상기 복수의 메모리 뱅크들 중 상기 제2 개수는 상기 복수의 메모리 뱅크들 중 상기 제1 개수보다 적은 수를 포함하고, 상기 제2 메모리 맵핑 함수는, 상기 복수의 메모리 뱅크들 중 상기 활성인 나머지 메모리 뱅크 중 하나의 메모리 뱅크의 하드웨어 메모리 위치가, 상기 제1 메모리 맵핑 함수 하에서, 상기 복수의 메모리 뱅크들 중 상기 활성인 나머지 메모리 뱅크 중 상이한 하나의 메모리 뱅크의 하드웨어 메모리 위치에 맵핑되는 물리적 어드레스에 맵핑되지 않게, 상기 물리적 어드레스들을 상기 하드웨어 메모리 위치들에 맵핑하도록 구성되는 전자 디바이스.
  5. 제1항에 있어서,
    상기 메모리 컨트롤러는, 데이터를, 비활성화될 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크의 하드웨어 메모리 위치로부터, 상기 복수의 메모리 뱅크들 중 상기 활성인 나머지 메모리 뱅크의 하드웨어 메모리 위치 및 상기 데이터가 복사된 비활성화될 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크의 상기 하드웨어 메모리 위치 양쪽 모두에 복사하도록 구성되는 전자 디바이스.
  6. 삭제
  7. 제1항에 있어서,
    활성인 상기 복수의 메모리 뱅크들 중 상기 제2 개수는 활성인 상기 복수의 메모리 뱅크들 중 상기 제1 개수보다 1개 더 적은 수를 포함하는 전자 디바이스.
  8. 전자 디바이스로서,
    하드웨어 메모리 위치들을 갖는 복수의 메모리 뱅크들 - 상기 복수의 메모리 뱅크들 중 적어도 하나의 메모리 뱅크는 선택적으로 비활성화되도록 구성됨 -;
    물리적 메모리 어드레스들을 통해 메모리 요구들을 발행하도록 구성되는 하나 이상의 프로세서들;
    상기 전자 디바이스의 성능의 측정치를 표시하도록 구성되는 적어도 하나의 카운터 - 상기 성능의 측정치는 상기 하나 이상의 프로세서들의 활동의 레벨을 포함하고, 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크가 비활성화되는 것으로 결정하는 것은 상기 적어도 하나의 카운터에 의해 표시되는 성능의 측정치에 의존함 - ; 및
    3개의 메모리 뱅크들이 활성인 경우에는 제1 맵핑 수학식(mapping equation)을 이용하며 2개의 메모리 뱅크들이 활성인 경우에는 제2 맵핑 수학식을 이용하여, 상기 물리적 메모리 어드레스들을 상기 하드웨어 메모리 위치들에 동적으로 맵핑하도록 구성된 메모리 컨트롤러
    를 포함하고,
    상기 제1 맵핑 수학식은 다음의 관계식: BankIndex = Floor(PAddr/TotalBanks) 및 DIMMAddr = MOD(PAddr*BankSize,TotalMemory) + BankIndex을 포함하고,
    여기서, PAddr은 물리적 메모리 어드레스를 나타내고, DIMMAddr은, 상기 복수의 메모리 뱅크들 중 3개의 메모리 뱅크들이 활성인 경우에 상기 물리적 메모리 어드레스가 맵핑되는 하드웨어 메모리 위치를 나타내고, BankSize는 상기 복수의 메모리 뱅크들 각각의 물리적 메모리 어드레스들의 양을 나타내고, TotalBanks는 상기 복수의 메모리 뱅크들 중 활성인 메모리 뱅크들의 총 수를 나타내며, TotalMemory는 상기 복수의 메모리 뱅크들 중 상기 활성인 메모리 뱅크들 사이의 하드웨어 메모리 위치들의 총 수를 나타내고,
    상기 메모리 컨트롤러는, 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크가 비활성화될 경우에, 비활성화될 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크와 상기 복수의 메모리 뱅크들 중 활성인 나머지 메모리 뱅크 중 선택된 메모리 뱅크 사이에 데이터를 스왑하며, 비활성화될 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크가 셀프 리프레시 모드(self-refresh mode)에 진입하게 함으로써 비활성화될 상기 복수의 메모리 뱅크들 중 하나의 메모리 뱅크를 비활성화하도록 구성되는
    전자 디바이스.
  9. 제8항에 있어서,
    상기 제2 맵핑 수학식은 다음의 관계식:
    Figure 112012092928962-pct00053

    을 포함하고,
    여기서, ALT_DIMMAddr3_2는, 2개의 메모리 뱅크들이 활성인 경우에 물리적 어드레스가 맵핑되는 스토리지 셀을 나타내고, ReducedMemory3_2는, 상기 활성인 2개의 메모리 뱅크들에 걸쳐 이용가능한 하드웨어 메모리 위치들의 양을 나타내며, ReducedBanks3_2는 상기 활성인 2개의 메모리 뱅크들의 수를 나타내는 전자 디바이스.
  10. 제8항에 있어서,
    상기 제2 맵핑 수학식은 다음의 관계식:
    Figure 112012092928962-pct00054

    을 포함하는 전자 디바이스.
  11. 제8항에 있어서,
    상기 메모리 컨트롤러는, 하나의 메모리 뱅크가 활성인 경우에는 제3 맵핑 수학식을 이용하여 상기 물리적 메모리 어드레스들을 하드웨어 메모리 위치들에 동적으로 맵핑하도록 구성되고, 상기 제3 맵핑 수학식은 다음의 관계식:
    Figure 112012092928962-pct00055

    을 포함하고,
    여기서, ALT_DIMMAddr2_1은, 하나의 메모리 뱅크가 활성인 경우에 물리적 어드레스가 맵핑되는 하드웨어 메모리 위치를 나타내고, ReducedMemory2_1은 상기 활성인 하나의 메모리 뱅크에 걸쳐 이용가능한 하드웨어 메모리 위치들의 양을 나타내며, ReducedBanks2_1은 상기 활성인 하나의 메모리 뱅크의 수를 나타내는 전자 디바이스.
  12. 전자 디바이스의 메모리 동작 기준들에 적어도 부분적으로 기초하여, 상기 전자 디바이스의 활성 메모리의 부분을 비활성화하는 것을 결정하는 단계 - 상기 비활성화하는 것을 결정하는 단계는 적어도 하나의 카운터에 의해 표시되는 상기 전자 디바이스의 성능의 측정치에 적어도 부분적으로 의존하고, 상기 성능의 측정치는 하나 이상의 프로세서의 활동 레벨을 포함함 - ;
    비활성화될 상기 활성 메모리의 부분을 선택하는 단계;
    메모리 컨트롤러를 이용하는 메모리 맵핑 수학식에 적어도 부분적으로 기초하여, 상기 메모리 컨트롤러를 이용하여 비활성화되도록 선택된 상기 활성 메모리의 부분 상의 하드웨어 메모리 위치들로부터 활성 메모리의 다른 부분들 상의 하드웨어 메모리 위치들로 데이터를 복사하는 단계;
    상기 활성 메모리의 다른 부분들 상의 하드웨어 메모리 위치들로부터 비활성화되도록 선택된 상기 활성 메모리의 부분 상의 하드웨어 메모리 위치들로 데이터를 복사하는 단계; 및
    상기 메모리 컨트롤러를 이용하여, 비활성화되도록 선택된 상기 활성 메모리의 부분을 셀프 리프레시 모드에 진입하게 함으로써 비활성화되도록 선택된 상기 활성 메모리의 부분을 비활성화하는 단계
    를 포함하며,
    비활성화되도록 선택된 상기 활성 메모리의 부분 상의 상기 하드웨어 메모리 위치들은, 적어도 비활성화되도록 선택된 상기 활성 메모리의 부분이 비활성화될 때까지 액세스가능한 채로 남아 있는 방법.
  13. 제12항에 있어서,
    상기 비활성화될 활성 메모리의 부분은, 상기 하나 이상의 프로세서들이 상기 비활성화될 활성 메모리의 부분과 연관된 물리적 어드레스들을 마지막으로 요구한 때에 기초하여 상기 메모리 컨트롤러에 의해 결정되는 방법.
  14. 제12항에 있어서,
    상기 비활성화될 활성 메모리의 부분은, 상기 하나 이상의 프로세서들로부터 상기 메모리 컨트롤러로의 메모리 부분 셧다운 커맨드에 기초하여 선택되는 방법.
  15. 제12항에 있어서,
    상기 비활성화될 활성 메모리의 부분은, 대역폭과 전력 소비 팩터들의 밸런스에 적어도 부분적으로 기초하여 선택되는 방법.
  16. 제12항에 있어서,
    상기 데이터는, 하나 이상의 원자적 복사들(atomic copies)을 수행하라는 오퍼레이팅 시스템 또는 소프트웨어로부터의 명령어에 적어도 부분적으로 기초하여 상기 메모리 컨트롤러에 의해 복사되는 방법.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020127029643A 2010-04-13 2011-04-11 온 더 플라이 메모리 컨트롤러 맵핑 KR101459866B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US32375310P 2010-04-13 2010-04-13
US61/323,753 2010-04-13
US12/895,689 US8799553B2 (en) 2010-04-13 2010-09-30 Memory controller mapping on-the-fly
US12/895,689 2010-09-30
PCT/US2011/031885 WO2011130141A1 (en) 2010-04-13 2011-04-11 Memory controller mapping on-the-fly

Publications (2)

Publication Number Publication Date
KR20130010485A KR20130010485A (ko) 2013-01-28
KR101459866B1 true KR101459866B1 (ko) 2014-11-07

Family

ID=44761746

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127029643A KR101459866B1 (ko) 2010-04-13 2011-04-11 온 더 플라이 메모리 컨트롤러 맵핑

Country Status (6)

Country Link
US (3) US8799553B2 (ko)
EP (1) EP2558939B1 (ko)
KR (1) KR101459866B1 (ko)
CN (1) CN102893266B (ko)
AU (1) AU2011240803B2 (ko)
WO (1) WO2011130141A1 (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8339626B2 (en) * 2009-09-08 2012-12-25 Samsung Electronics Co., Ltd. Image forming apparatus and controlling method thereof
US8412972B2 (en) * 2010-06-28 2013-04-02 Intel Corporation Method and apparatus for reducing power consumption for memories
US8719539B2 (en) * 2011-06-30 2014-05-06 Red Hat, Inc. Using heuristics for field types of a structure to categorize dynamic memory allocations
US8694753B2 (en) * 2011-06-30 2014-04-08 Red Hat, Inc. Debugging a dynamic memory allocation using heuristics reliability scores
US8725978B2 (en) * 2011-06-30 2014-05-13 Red Hat, Inc. Using symbol information for categorization of dynamic memory allocations
JP5877348B2 (ja) * 2011-09-28 2016-03-08 パナソニックIpマネジメント株式会社 メモリ制御システム及び電力制御方法
US20180144436A1 (en) * 2014-06-24 2018-05-24 Intel Corporation Reducing power for 3d workloads
US20120095607A1 (en) * 2011-12-22 2012-04-19 Wells Ryan D Method, Apparatus, and System for Energy Efficiency and Energy Conservation Through Dynamic Management of Memory and Input/Output Subsystems
JP2013164785A (ja) * 2012-02-13 2013-08-22 Nikon Corp 電子機器および電子機器の制御プログラム
JP2013222321A (ja) * 2012-04-17 2013-10-28 Sony Corp メモリ制御装置、メモリ制御方法、情報処理装置、およびプログラム
JP5624583B2 (ja) * 2012-05-31 2014-11-12 株式会社東芝 プログラム、計算処理装置、メモリ管理方法および計算機
US9256531B2 (en) 2012-06-19 2016-02-09 Samsung Electronics Co., Ltd. Memory system and SoC including linear addresss remapping logic
KR102004849B1 (ko) * 2012-08-02 2019-07-29 삼성전자 주식회사 동적 메모리 재할당 관리 방법과 상기 방법을 수행할 수 있는 장치
US9146846B2 (en) * 2012-09-14 2015-09-29 Advanced Micro Devices, Inc. Programmable physical address mapping for memory
US20140122807A1 (en) * 2012-10-31 2014-05-01 Hewlett-Packard Development Company, Lp. Memory address translations
US20140136793A1 (en) * 2012-11-13 2014-05-15 Nvidia Corporation System and method for reduced cache mode
US9218285B2 (en) * 2012-11-26 2015-12-22 Arm Limited Variable mapping of memory accesses to regions within a memory
US9720858B2 (en) 2012-12-19 2017-08-01 Nvidia Corporation Technique for performing memory access operations via texture hardware
US9697006B2 (en) 2012-12-19 2017-07-04 Nvidia Corporation Technique for performing memory access operations via texture hardware
US9348762B2 (en) 2012-12-19 2016-05-24 Nvidia Corporation Technique for accessing content-addressable memory
US9760149B2 (en) * 2013-01-08 2017-09-12 Qualcomm Incorporated Enhanced dynamic memory management with intelligent current/power consumption minimization
US9342443B2 (en) * 2013-03-15 2016-05-17 Micron Technology, Inc. Systems and methods for memory system management based on thermal information of a memory system
KR102044478B1 (ko) * 2013-04-22 2019-11-13 삼성전자주식회사 드라이버 및 이를 포함하는 메모리 컨트롤러
US9043569B2 (en) 2013-05-31 2015-05-26 International Business Machines Corporation Memory data management
US9472248B2 (en) * 2014-03-28 2016-10-18 Intel Corporation Method and apparatus for implementing a heterogeneous memory subsystem
US9722335B2 (en) * 2014-05-05 2017-08-01 Qualcomm Incorporated Dual in line memory module (DIMM) connector
US9367442B2 (en) * 2014-07-12 2016-06-14 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Allocating memory usage based on voltage regulator efficiency
US20160070503A1 (en) * 2014-09-10 2016-03-10 Kabushiki Kaisha Toshiba Memory system
KR102347657B1 (ko) * 2014-12-02 2022-01-06 삼성전자 주식회사 전자 장치 및 이의 공유 캐시 메모리 제어 방법
US9678872B2 (en) 2015-01-16 2017-06-13 Oracle International Corporation Memory paging for processors using physical addresses
US10019358B2 (en) * 2015-03-20 2018-07-10 Vixs Systems Inc. Bank address remapping to load balance memory traffic among banks of memory
US20160349817A1 (en) * 2015-05-29 2016-12-01 Intel Corporation Power protected memory with centralized storage
KR102420897B1 (ko) * 2016-03-17 2022-07-18 에스케이하이닉스 주식회사 메모리 모듈, 이를 포함하는 메모리 시스템 및 그의 동작 방법
US10310975B2 (en) * 2016-05-11 2019-06-04 Seagate Technology Llc Cache offload based on predictive power parameter
US10198216B2 (en) * 2016-05-28 2019-02-05 Advanced Micro Devices, Inc. Low power memory throttling
EP3252651A1 (en) 2016-05-30 2017-12-06 Samsung Electronics Co., Ltd Computing system having an on-the-fly encryptor and an operating method thereof
US10521876B2 (en) 2017-04-17 2019-12-31 Intel Corporation Deferred geometry rasterization technology
CN109086219B (zh) * 2017-06-14 2022-08-05 北京忆恒创源科技股份有限公司 去分配命令处理方法及其存储设备
US20190073020A1 (en) * 2017-09-01 2019-03-07 Intel Corporation Dynamic memory offlining and voltage scaling
CN107885669B (zh) * 2017-11-09 2021-06-04 上海华力微电子有限公司 一种分布式存储区块访问电路
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 삼성전자주식회사 입출력 장치의 활용도 및 성능을 조절하는 메모리 컨트롤러, 애플리케이션 프로세서 및 메모리 컨트롤러의 동작
KR102586741B1 (ko) * 2018-04-23 2023-10-11 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11256696B2 (en) 2018-10-15 2022-02-22 Ocient Holdings LLC Data set compression within a database system
US11307996B2 (en) * 2018-11-30 2022-04-19 Intel Corporation Hardware unit for reverse translation in a processor
US10936507B2 (en) * 2019-03-28 2021-03-02 Intel Corporation System, apparatus and method for application specific address mapping
US11487339B2 (en) * 2019-08-29 2022-11-01 Micron Technology, Inc. Operating mode register
US11755475B2 (en) * 2020-01-31 2023-09-12 Dell Products L.P. System and method for utilizing enhanced thermal telemetry for differential storage of data on a memory module
CN113360423A (zh) * 2020-03-03 2021-09-07 瑞昱半导体股份有限公司 数据储存系统及操作数据储存系统的方法
US11675413B2 (en) * 2020-09-30 2023-06-13 Dell Products L.P. Reducing power consumption of memory devices at an information handling system
US11604744B2 (en) 2020-10-16 2023-03-14 Alibaba Group Holding Limited Dual-modal memory interface controller
WO2022109898A1 (en) * 2020-11-26 2022-06-02 Micron Technology, Inc. Programming video data to different portions of memory
US11868266B2 (en) * 2021-03-11 2024-01-09 Micron Technology, Inc. Bank redistribution based on power consumption
WO2022193120A1 (en) * 2021-03-16 2022-09-22 Micron Technology, Inc. Logical-to-physical mapping compression techniques
US11693585B2 (en) * 2021-04-26 2023-07-04 Apple Inc. Address hashing in a multiple memory controller system
US11803471B2 (en) 2021-08-23 2023-10-31 Apple Inc. Scalable system on a chip

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080005516A1 (en) * 2006-06-30 2008-01-03 Meinschein Robert J Memory power management through high-speed intra-memory data transfer and dynamic memory address remapping
US7318114B1 (en) * 2004-10-29 2008-01-08 Sun Microsystems, Inc. System and method for dynamic memory interleaving and de-interleaving
US20080059820A1 (en) * 2006-08-29 2008-03-06 Vaden Thomas L Method of reducing power consumption of a computing system by evacuating selective platform memory components thereof

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04230508A (ja) * 1990-10-29 1992-08-19 Internatl Business Mach Corp <Ibm> 低電力消費メモリ装置
US5428758A (en) 1991-05-10 1995-06-27 Unisys Corporation Method and system for remapping memory from one physical configuration to another physical configuration
US5479624A (en) * 1992-10-14 1995-12-26 Lee Research, Inc. High-performance interleaved memory system comprising a prime number of memory modules
AU3313795A (en) * 1994-10-14 1996-04-26 Compaq Computer Corporation Circuit for placing a cache memory into low power mode in response to special bus cycles
US5956744A (en) 1995-09-08 1999-09-21 Texas Instruments Incorporated Memory configuration cache with multilevel hierarchy least recently used cache entry replacement
US6081463A (en) 1998-02-25 2000-06-27 Micron Technology, Inc. Semiconductor memory remapping
US6209074B1 (en) * 1998-04-28 2001-03-27 International Business Machines Corporation Address re-mapping for memory module using presence detect data
US6185654B1 (en) * 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6546453B1 (en) 2000-08-31 2003-04-08 Compaq Information Technologies Group, L.P. Proprammable DRAM address mapping mechanism
US6535959B1 (en) * 2000-09-05 2003-03-18 Conexant Systems, Inc. Circuit and method for reducing power consumption in an instruction cache
US6742097B2 (en) 2001-07-30 2004-05-25 Rambus Inc. Consolidation of allocated memory to reduce power consumption
US6751143B2 (en) * 2002-04-11 2004-06-15 Micron Technology, Inc. Method and system for low power refresh of dynamic random access memories
US7100013B1 (en) * 2002-08-30 2006-08-29 Nvidia Corporation Method and apparatus for partial memory power shutoff
US6920523B2 (en) 2002-10-07 2005-07-19 Infineon Technologies Ag Bank address mapping according to bank retention time in dynamic random access memories
US6912616B2 (en) 2002-11-12 2005-06-28 Hewlett-Packard Development Company, L.P. Mapping addresses to memory banks based on at least one mathematical relationship
US7010656B2 (en) * 2003-01-28 2006-03-07 Intel Corporation Method and apparatus for memory management
US20050125701A1 (en) * 2003-12-03 2005-06-09 International Business Machines Corporation Method and system for energy management via energy-aware process scheduling
US7752470B2 (en) * 2003-12-03 2010-07-06 International Business Machines Corporation Method and system for power management including device controller-based device use evaluation and power-state control
US7081897B2 (en) * 2003-12-24 2006-07-25 Intel Corporation Unified memory organization for power savings
US7685354B1 (en) 2004-06-30 2010-03-23 Sun Microsystems, Inc. Multiple-core processor with flexible mapping of processor cores to cache banks
US8190809B2 (en) * 2004-11-23 2012-05-29 Efficient Memory Technology Shunted interleave for accessing plural memory banks, particularly those having partially accessed cells containing data for cache lines
US8010764B2 (en) * 2005-07-07 2011-08-30 International Business Machines Corporation Method and system for decreasing power consumption in memory arrays having usage-driven power management
TW200805047A (en) * 2005-12-23 2008-01-16 Koninkl Philips Electronics Nv Performance analysis based system level power management
KR100816690B1 (ko) * 2006-04-13 2008-03-27 주식회사 하이닉스반도체 온도 감지장치를 구비하는 반도체메모리소자
JP4209906B2 (ja) * 2006-08-02 2009-01-14 株式会社日立製作所 低消費電力メモリ管理方法及びその方法を用いた計算機
EP2132635B1 (en) 2007-03-30 2017-08-16 Rambus Inc. System including hierarchical memory modules having different types of integrated circuit memory devices
US8046597B2 (en) * 2007-08-14 2011-10-25 Dell Products L.P. System and method for managing storage device capacity use
US20090083561A1 (en) 2007-09-26 2009-03-26 Nikos Kaburlasos Dynamic power management of dimms
US7979648B2 (en) 2008-05-30 2011-07-12 Oracle America, Inc. Dynamic interleaving
US8200999B2 (en) 2008-08-11 2012-06-12 International Business Machines Corporation Selective power reduction of memory hardware
US8639874B2 (en) 2008-12-22 2014-01-28 International Business Machines Corporation Power management of a spare DRAM on a buffered DIMM by issuing a power on/off command to the DRAM device
JP4832553B2 (ja) * 2009-06-16 2011-12-07 株式会社日立製作所 コピー開始タイミングを制御するシステム及び方法
US8392736B2 (en) 2009-07-31 2013-03-05 Hewlett-Packard Development Company, L.P. Managing memory power usage
US20110047316A1 (en) * 2009-08-19 2011-02-24 Dell Products L.P. Solid state memory device power optimization
US8285936B2 (en) * 2009-10-20 2012-10-09 The Regents Of The University Of Michigan Cache memory with power saving state
US8495299B2 (en) 2009-11-16 2013-07-23 Microsoft Corporation Non-blocking data transfer via memory cache manipulation
KR101639574B1 (ko) * 2009-12-30 2016-07-14 삼성전자주식회사 적응적 뱅크 어드레스를 제공하는 디스플레이 시스템 및 그것의 어드레스 맵핑 방법
US8412972B2 (en) * 2010-06-28 2013-04-02 Intel Corporation Method and apparatus for reducing power consumption for memories
US8356155B2 (en) * 2010-09-13 2013-01-15 Advanced Micro Devices, Inc. Dynamic RAM Phy interface with configurable power states
US9235500B2 (en) * 2010-12-07 2016-01-12 Microsoft Technology Licensing, Llc Dynamic memory allocation and relocation to create low power regions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7318114B1 (en) * 2004-10-29 2008-01-08 Sun Microsystems, Inc. System and method for dynamic memory interleaving and de-interleaving
US20080005516A1 (en) * 2006-06-30 2008-01-03 Meinschein Robert J Memory power management through high-speed intra-memory data transfer and dynamic memory address remapping
US20080059820A1 (en) * 2006-08-29 2008-03-06 Vaden Thomas L Method of reducing power consumption of a computing system by evacuating selective platform memory components thereof

Also Published As

Publication number Publication date
US9009383B2 (en) 2015-04-14
US20140331020A1 (en) 2014-11-06
AU2011240803B2 (en) 2014-05-29
US9201608B2 (en) 2015-12-01
CN102893266A (zh) 2013-01-23
WO2011130141A1 (en) 2011-10-20
EP2558939B1 (en) 2020-01-01
US8799553B2 (en) 2014-08-05
AU2011240803A1 (en) 2012-11-22
US20140325173A1 (en) 2014-10-30
KR20130010485A (ko) 2013-01-28
EP2558939A1 (en) 2013-02-20
US20110252180A1 (en) 2011-10-13
CN102893266B (zh) 2015-06-03

Similar Documents

Publication Publication Date Title
KR101459866B1 (ko) 온 더 플라이 메모리 컨트롤러 맵핑
US20210056035A1 (en) Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
US8010764B2 (en) Method and system for decreasing power consumption in memory arrays having usage-driven power management
US7454639B2 (en) Various apparatuses and methods for reduced power states in system memory
TWI426444B (zh) 包含快閃式介面的硬碟驅動器之可調整儲存系統
US7549034B2 (en) Redistribution of memory to reduce computer system power consumption
EP2936272B1 (en) Reducing power consumption of volatile memory via use of non-volatile memory
US10353454B2 (en) Information processing apparatus and computer program product for changing swap spaces based on a performance threshold
TWI390520B (zh) 包含快閃式介面的硬碟驅動器之可調整儲存系統
US7218566B1 (en) Power management of memory via wake/sleep cycles
US9471131B2 (en) Apparatus and machine for reducing power consumption of memory including a plurality of segment areas, method therefore and non-transitory computer readable medium
US20110047316A1 (en) Solid state memory device power optimization
JP5989574B2 (ja) 計算機、メモリ管理方法およびプログラム
KR102553539B1 (ko) 고체 상태 드라이브에서 가비지 수집 리소스 할당을 적응시키는 메커니즘
JP6276470B2 (ja) ポータブルコンピューティングデバイスの揮発性メモリのスタンバイ電力を低減するためのシステムおよび方法
WO2005069148A2 (en) Memory management method and related system
US20120017052A1 (en) Information Handling System Universal Memory Wear Leveling System and Method
US20160334861A1 (en) Power management for a data storage system
US8068373B1 (en) Power management of memory via wake/sleep cycles
CN115687196B (zh) 用于对多通道存储器进行控制的方法和装置
JP2011018237A (ja) ディスクアレイ装置及びその制御方法

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant