KR20110059711A - 메모리 모듈 및 메모리 모듈 제어 방법 - Google Patents

메모리 모듈 및 메모리 모듈 제어 방법 Download PDF

Info

Publication number
KR20110059711A
KR20110059711A KR1020117005365A KR20117005365A KR20110059711A KR 20110059711 A KR20110059711 A KR 20110059711A KR 1020117005365 A KR1020117005365 A KR 1020117005365A KR 20117005365 A KR20117005365 A KR 20117005365A KR 20110059711 A KR20110059711 A KR 20110059711A
Authority
KR
South Korea
Prior art keywords
memory
command
chips
vmd
register
Prior art date
Application number
KR1020117005365A
Other languages
English (en)
Other versions
KR101477849B1 (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 KR20110059711A publication Critical patent/KR20110059711A/ko
Application granted granted Critical
Publication of KR101477849B1 publication Critical patent/KR101477849B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Dram (AREA)

Abstract

본 발명의 실시예들은 다중코어 메모리 모듈에 관한 것이다. 일 실시예에서, 메모리 모듈(500)은 메모리 칩들과, 상기 메모리 칩들 각각 및 메모리 제어기에 전자적으로 접속된 디멀티플렉서 레지스터(502)를 포함한다. 상기 메모리 제어기는 상기 메모리 칩들 중 하나 이상을 가변하는 성능 요구 사항 및/또는 에너지 효율 요구 사항에 따라서 적어도 하나의 가상 메모리 디바이스로 그룹화시킨다. 상기 디멀티플렉서 레지스터(502)는 상기 가상 메모리 디바이스들 중 하나를 식별하는 명령을 수신하여서 상기 명령을 상기 식별된 가상 메모리 디바이스의 메모리 칩들에 전송한다. 소정의 실시예에서, 메모리 칩들은 동적 랜덤 액세스 메모리(DRAM) 칩들일 수 있다.

Description

메모리 모듈 및 메모리 모듈 제어 방법{INDEPENDENTLY CONTROLLABLE AND RECONFIGURABLE VIRTUAL MEMORY DEVICES IN MEMORY MODULES THAT ARE PIN-COMPATIBLE WITH STANDARD MEMORY MODULES}
본 발명은 메모리 모듈에 관한 것이며, 특히 하나 이상의 메모리 칩들을 포함하는 개별 가상 메모리 디바이스를 독립적으로 제어하도록 하는 메모리 모듈에 관한 것이다.
현대의 컴퓨터 시스템에서, 메모리 용량 및 대역폭에 대한 요구가 점점 증가하고 있다. 마이크로프로세서의 최근 성능 스케일링은 칩당 코어의 개수를 증가시키는데 의존하며 다중 코어 및 다수의 코어 칩 다중 프로세서(CMP)는 프로세서당 다수의 메모리 제어기를 통한 훨씬 더 높아진 메모리 대역폭 및 용량을 요구하고 있다. 메인 메모리 모듈의 전력 예산은 현재의 컴퓨터 시스템 내의 프로세서의 전력 예산과 유사하거나 이보다 매우 높다.
그러나, 통상적임 메모리 모듈은 에너지 측면에서 비효율적이다. 가령, 메모리 액세스마다 너무 많은 비트가 활성화되고 액세스되는 비트의 대부분은 사용되지 않고 다시 저장되어서 동적 전력이 낭비된다. 액세스 패턴의 국부성을 활용함으로써, 다수의 임시적으로 인접하는 메모리 액세스는 메모리 활성화마다 보다 많은 비트를 사용하기 위해서 컴파일러 또는 메모리 제어기에 의해서 결합될 수 있다. 그러나, 이러한 방식이 불규칙 액세스 패턴에 대해서 애플리케이션되는 경우에 그 성공 가능성이 한정되어 있다. 이러한 방식의 효율은 일반적인 애플리케이션에서는 메모리 액세스의 랜덤 특성으로 인해서 제약되며 CMP 메모리 시스템에서는 저하되는데, 그 이유는 다수의 쓰레드로부터의 독립 메모리 액세스 요청들이 인터리빙되기 때문이다.
따라서, 시스템 성능을 크게 희생시키지 않으면서 에너지를 절감할 수 있는, 정보로의 액세스를 가능하게 하는 메모리 시스템이 요구된다.
본 발명의 다양한 실시예들은 다중 코어 메모리 모듈에 관한 것이다. 일 실시예에서, 메모리 모듈은 메모리 칩과, 상기 각 메모리 칩 및 메모리 제어기에 전자적으로 접속된 디멀티플렉서 레지스터를 포함한다. 메모리 제어기는 변하는 성능 및/또는 에너지 효율 필요 사항에 따라서 메모리 칩들 중 하나 이상을 적어도 하나의 가상 메모리 디바이스로 그룹화시킨다. 디멀티플렉서 레지스터는 이 가상 메모리 디바이스들 중 하나를 식별하는 명령을 수신하여서 이 명령을 상기 식별된 가상 메모리 디바이스의 메모리 칩들에 전송한다. 소정의 실시예에서, 메모리 칩들은 동적 랜덤 액세스 메모리(DRAM) 칩들일 수 있다.
도 1a는 8 개의 메모리 칩들을 갖는 메모리 모듈의 등측도이다.
도 1b는 회로 기판 상에 실장된 메모리 모듈 및 메모리 제어기의 등측도이다.
도 2는 메모리 칩을 포함하는 8 개의 뱅크의 개략도이다.
도 3a는 통상적인 메모리 모듈의 개략도이다.
도 3b는 통상적인 메모리 모듈의 모든 메모리 칩들로 명령을 브로드캐스팅하는 실례를 나타낸다.
도 4a는 본 발명의 실시예에 따라서 구성된 단일 다중-코어 메모리 모듈의 등측도이다.
도 4b는 본 발명의 실시예에 따른, 회로 기판 상에 탑재된 다중 코어 메모리 모듈 및 메모리 제어기의 등측도이다.
도 5a 내지 도 5e는 본 발명의 실시예들에 따라서 구성된 다중 코어 DIMM(dual in-line memory module) 및 이와 연관된 디멀티플렉서 레지스터들의 전반적인 개략도이다.
도 6a 내지 도 6c는 본 발명의 실시예들에 따라서 구성된 제 1 메모리 모듈 구성을 갖는 예시적인 다중 코어 DIMM 및 이와 연관된 디멀티플렉서 레지스터들의 전반적인 개략도이다.
도 7a 및 도 7b는 본 발명의 실시예들에 따른, 도 6에 도시된 다중 코어 DIMM의 2 개의 상이한 VMD 구성의 개략도이다.
도 8은 본 발명의 실시예들에 따른, 16 개의 메모리 칩들을 포함하는 다중 코어 DIMM의 개략도이다.
도 9는 본 발명의 실시예들에 따른, 메모리 모듈을 제어하고 가상 메모리 디바이스를 구성하는 방법의 제어 흐름도이다.
도 10은 본 발명의 실시예들에 따라서, 도 4에 도시된 다중 코어 DIMM로 도 1에 도시된 표준 DIMM을 대체한 바를 나타내고 있다.
본 발명의 실시예들은 컴퓨터 시스템 성능에 적은 영향을 주면서 메모리 시스템의 에너지 효율을 개선하도록 재구성될 수 있는 메모리 모듈들에 관한 것이다. 본 명세서에서 용어 "성능"은 해당하는 유용한 작업을 완료하는데 사용되는 자원의 양 및 시간에 대비하여서 컴퓨터 시스템에 의해서 처리되는 상기 유용한 작업의 양을 말한다. 성능 척도로는 대역폭 및 레이턴시(latency)가 있다. 가령, 높은 대역폭 및 낮은 레이턴시를 갖는 컴퓨터 시스템은 낮은 대역폭 및 높은 레이턴시를 갖는 컴퓨터 시스템보다 상대적으로 우수한 성능을 갖는다. 메모리 모듈들은 하나 이상의 메모리 칩들로 구성된 그룹들로 분할될 수 있는 메모리 칩들을 포함한다. 이러한 그룹들은 "가상 메모리 디바이스(VMD:virtual memory device)"로서 지칭된다. 각 VMD는 그 자신의 데이터 경로를 가지며 공유된 명령 경로를 통해서 개별 메모리 요청 사항을 시분할 멀티플렉싱 방식으로 수신할 수 있다. VMD의 개수 및 각 VMD를 포함하는 메모리 칩들의 개수는 부트-업 타임(boot-up time) 동안 선택되거나, 애플리케이션의 실행 동안에 동적으로 변하거나, 컴퓨터 시스템 운영자에 의해서 결정될 수 있다. 달리 말하면, 메모리 액세스마다의 메모리 칩들의 개수는 성능 요구 사항과 에너지 효율 요구 사항 간의 균형을 유지하도록 가변되고 선택될 수 있다.
또한, 메모리 모듈은 다수의 메모리 모듈 규격들과 핀-호환될 수 있도록 구성된다. 달리 말하면, 통상적인 메모리 모듈들을 지원하는데 사용되는 동일한 메모리 슬롯이 또한 본 발명의 메모리 모듈을 지원하는데에도 사용될 수 있다.
세부적인 기술 사항들은 다음과 같이 구성된다. 통상적인 메모리 모듈들 및 이와 연관된 에너지 비효율성이 처음 섹션에서 먼저 일반적으로 서술된다. 이어서, 다음 섹션에서, 본 발명에 따른 메모리 모듈 실시예들이 기술된다.
메모리 모듈 및 메모리를 액세스할 시의 비효율성
메모리 모듈은 통상적으로 DIMM(dual in-line memory module)로 지칭되는 저장 유닛을 형성하는 인쇄 회로 기판 상에 탑재된 몇 개의 DRAM 칩들로 구성된다. 도 1a는 8 개의 DRAM 칩들을 포함하는 단일 DIMM의 등측도다. 하나 이상의 DIMM은 회로 기판 상에 장착되고 메모리 제어기에 의해 제어된다. 도 1b는 회로 기판(106) 상에 탑재된 메모리(102) 및 메모리 제어기(104)의 등측도이다. 메모리(102)는 4 개의 DIMM 슬롯들(112-115) 내에 삽입된 4 개의 DIMM(108-111)로 구성된다. 메모리 제어기(104)는 DIMM(108-111)로/로부터 전송된 명령 및 데이터의 흐름을 관리하고 중앙 처리 유닛과 같은 컴퓨터 시스템의 다른 주요 구성 요소들과 메모리(102)를 인터페이싱시키는 다중코어 마이크로프로세서 칩의 일부 또는 컴퓨터 칩일 수 있다. 각 DIMM은 인터페이스(118)를 통해서 메모리 제어기(104)와 전기적으로 통신한다. 인터페이스(118)는 클록 신호 및 명령을 메모리 제어기(104)에서 메모리(102)로 반송하며 DIMM(108-111)와 메모리 제어기(104) 간에서 데이터 신호를 반송하는 버스이다. 데이터 신호들은 메모리 제어기(104)와 DIMM(108-111) 내의 DRAM 칩들 간에 전달된다. 인터페이스(118)는 SDR(single-data rate) 전달, DDR(double-data rate) 전달 및 이보다 높은 데이터 레이트 전달을 지원할 수 있다. SDR은 클록 사이클마다 데이터 한번 전송하며, DDR은 컴퓨터 시스템 클록 신호의 상승 에지 및 하강 에지 양자에서 데이터를 전송한다. 메모리 제어기(104) 및 DIMM(108-111)은 SDR 및 DDR에 따라서 데이터를 송수신하도록 구성될 수 있다. DDR에서 클록 신호의 양 에지를 모두 사용함으로써, 데이터 신호는 동일한 한정 주파수에서 동작하여, 단일-데이터 레이트 전송에 비해서 데이터 전송 레이트를 2배로 만든다.
DRAM 칩은 트랜지스터 및 커패시터로 구성된 DRAM 메모리 셀로 지칭되는 구조물 내에 비트를 저장한다. 단일 DRAM 칩 내에는 수십억 개의 셀이 존재하며 이 셀들은 "뱅크"로 지칭되는 다수의 2 차원 어레이들로 된 2 차원적 배열로 구성된다. 도 2는 DRAM 칩(200)을 포함하는 8 개의 뱅크(0-7)의 개략도이다. 도 2의 실례에서 도시된 바와 같이, 각 뱅크는 교차하는 신호 라인을 통해서 행 디코더, 감지 증폭기, 열 디코더에 접속된다. 가령, 뱅크 0은 신호 라인(204)과 같은 x 축과 평행하여 연장된 신호 라인들을 통해서 행 디코더(202)에 접속된다. 또한, 뱅크 0은 신호 라인(210)과 같은 y 축과 평행하여 연장된 신호 라인들을 통해서 열 디코더(208) 및 감지 증폭기(206)에 접속된다. 메모리 셀들은 신호 라인 교차부에 위치한다. 가령, 메모리 셀(212)은 신호 라인(204)과 신호 라인(210)이 교차하는 지점에 위치한다.
메모리 제어기(104)에서 메모리(102)로 전송되는 명령은 판독, 기록, 활성화 및 리프레시 및 사전 충전 명령을 포함한다. 명령들은 제어 신호 및 어드레스 신호로 구성된다. 제어 신호는 명령에 의해서 수행되는 동작을 나타내고 어드레스 신호는 명령이 수행되는 DRAM 칩 내의 뱅크 및 행 또는 열의 어드레스를 식별한다. 가령, 활성화 명령은 활성화 제어 신호, 및 이 활성화 명령이 수행되는 DRAM 칩 내의 뱅크 및 행을 식별하는 뱅크 어드레스와 행 어드레스로 구성된다. 판독 및 기록 명령은 판독 및 기록 제어 신호와, 이 판독 및 기록 명령이 수행되는 DRAM 칩 내의 뱅크 및 열을 식별하는 뱅크 어드레스와 열 어드레스로 구성된다. 이 판독 및 기록 명령은 또한 "메모리 요청"으로서 지칭된다.
DRAM 칩(200)의 뱅크 내에 저장된 데이터는 2 단계로 해서 액세스된다. 먼저, 메모리 제어기(미도시)가 DRAM 칩(200)의 행 어드레스 및 뱅크 어드레스를 지정하는 활성화 명령을 전송한다. 통상적으로 8 K비트 또는 16 K비트인 뱅크의 그 행 내의 모든 비트들이 그 뱅크 내의 감지 증폭기 내로 활성화된다. 다음으로, 뱅크 어드레스 및 열 어드레스를 지정하는 하나 이상의 판독 및 기록 명령이 전송된다. 판독/기록 트랜잭션마다 전달되는 비트들의 개수는 데이터 버스의 크기 및 버스트 길이(burst length)에 의해서 결정된다. 이 버스트 길이는 데이터 블록들의 단일 버스트 트랜잭션 또는 고속 전송 시에 수행되는 판독/기록 동작들의 수를 제어하는 통상적인 메모리 관련 기본 입출력 시스템 설정 사항이다. 통상적으로, 버스트 길이는 4 또는 8로 설정된다. DRAM 칩이 메모리 요청, 가령, 메모리 판독 요청을 수신하면, 이 DRAM 칩은 인터페이스(118)의 신호 라인을 가로질러서 데이터를 공급함으로써 이에 응답한다. 메모리 판독 요청에 응답하여서 전송된 데이터의 블록의 크기는 버스트 길이에 의해서 결정된다. 64 비트의 넓은 데이터 버스(즉, 64 개의 단일 단부형 신호 라인들 또는 128 개의 차동 신호 라인들) 및 버스트 길이 4를 지원하도록 구성된 DRAM 칩들을 갖는 메모리 모듈은 메모리 제어기로부터의 단일 판독 요청에 응답하여서 32 바이트(4*64 비트 = 32 바이트)의 데이터 블록을 전송한다. 한편, 64 비트의 넓은 데이터 버스 및 버스트 길이 8을 지원하도록 구성된 DRAM 칩들을 갖는 메모리 모듈은 메모리 제어기로부터의 단일 판독 요청에 응답하여서 64 바이트(8*64 비트 = 64 바이트)의 데이터 블록을 전송한다.
데이터가 DRAM 칩의 동일한 뱅크 내의 2 개의 서로 다른 행에서 판독될 때에, 제 1 행은 다시 기록되어야 하며 이로써 비트 라인들이 충전되어야하고, 제 2 행 내의 데이터가 판독되기 이전에 제 2 행은 사전 충전 명령 및 활성화 명령에 의해서 래치(latch)되어야 한다. 사전 충전 명령은 그 행을 DRAM 뱅크 내로 다시 기록하며 이는 활성화 명령이 파괴적인 방식으로 판독하기 때문에 필요하다. 뱅크 어드레스는 판독, 기록, 활성화 및 사전 충전 명령들 내의 작은 수의 비트로 해서 주어진다. 이러한 명령 동작들은 동일한 뱅크 내에서의 제 1 활성화 명령과 제 2 활성화 명령 간에서 약 50nm를 취한다. 따라서, 활성화 명령과 사전 충전 명령 간에 수많은 판독/기록 명령들이 존재하지 않는다면, 명령/어드레스/데이터 버스들은 종종 유휴 상태로 있게 된다. 그러나, 서로 다른 뱅크에서 데이터가 판독되면, 서로 다른 뱅크로의 명령들은 파이프라인되는데(pipelined), 그 이유는 2 개의 서로 다른 뱅크들 간의 활성화 타임 간은 약 8ns 만큼 더 짧아지기 때문이다. 따라서, 특히 활성화 명령과 사전 충전 명령 쌍 간에 수많은 판독/기록 명령이 존재하지 않을 때에, 서로 다른 뱅크들에서의 요청들을 인터리빙함으로써 보다 높은 처리량이 달성될 수 있다.
도 3a는 각각이 8 비트 데이터 버스를 갖는 8 개의 DRAM 칩들을 포함하는 통상적인 DIMM(300)의 개략도이다. 방향 표시 화살표(302)는 메모리 제어기(미도시)에서 레지스터(304)로 지칭되는 선택 사양적 디바이스로 전송되는 명령들의 배포를 나타낸다. 레지스터(304)는 메모리 제어기와 DRAM 칩들 간의 버스 상에 위치한다. 메모리 제어기 상의 전기적 로드를 줄이고 명령 신호들의 안정성을 유지하기 위해서, 레지스터(304)는 메모리 제어기로부터의 명령 신호를 래치하여서 이들을 보다 우수한 신호 품질 및 타이밍 마진으로 해서 각 DRAM 칩으로 전송한다. 또한, 레지스터(304)는 명령들을 버퍼링하고 DRAM 칩들로 클록 신호들을 브로드캐스트하여서 메모리 제어기마다 다수의 DIMM을 갖는 시스템에서 서로 다른 DIMM으로의 액세스를 중첩시키는 것을 용이하게 한다. 레지스터(304)는 분기형 방향 표시 화살표(306,308)로 표시된 바와 같이 버스를 통해서 모든 8 개의 DRAM 칩들로 명령들을 브로드캐스트한다. 다른 통상적인 메모리 모듈에서는, 레지스터(304) 없이 명령들이 DRAM 칩들로 브로드캐스트된다.
도 3b는 통상적인 DIMM 동작의 실례를 나타내고 있다. 도 3b의 실례에서 도시된 바와 같이, DIMM(300) 내의 모든 DRAM 칩들이 메모리 제어기로부터 동일한 명령을 수신하여서 음영 영역(310)으로 표시된 각 DRAM 칩 내의 동일한 행을 활성화시킨다. 이로써, DIMM(300) 내의 모든 DRAM 칩들은 보다 넓은 데이터 경로 및 보다 큰 행들을 갖는 단일 DRAM 칩으로서 동작한다.
도 2를 참조하여서 상술된 바와 같이, DRAM 칩 행의 크기는 통상적으로 8 또는 16 K비트이다. DIMM로부터/으로 캐시 라인(cache line)을 판독/기록하기 위해서, 판독/기록 명령이 모든 DRAM 칩들로 브로드캐스트되고, 각 DRAM 칩은 동일한 행을 활성화시킨다. 달리 말하면, 8 개의 DRAM 칩들로 구성된 통상적인 DIMM에서, 각 DRAM 칩은 8 K비트를 포함하는 동일한 행 어드레스를 활성화시킨다. 따라서, DIMM의 8*8 K비트 또는 16*16 K비트가 한번에 활성화되며, 이는 판독 또는 기록될 캐시 라인의 크기보다 크다. 통상적인 캐시 라인은 64 바이트 또는 512 비트의 크기를 갖는다. 판독 및 기록 명령은 통상적으로 활성화된 DRAM 셀의 1% 이하를 사용하여서 일 캐시 라인에서 판독 및 기록되기 때문에, 활성화된 DRAM 셀의 99% 이상의 부분은 단일 판독 또는 기록 트랜잭션에서는 사용되지 않는다. 이로써, 에너지가 비효율적으로 사용된다.
본 발명의 실시예들
본 발명의 메모리 모듈 실시예들은 메모리 제어기로부터의 명령들을 수신하기 위한 디멀티플렉서 레지스터를 포함한다. 메모리 칩들은 디멀티플렉서 레지스터를 갖는 인쇄 회로 기판에 실장되어서 MCDIMM(multi-core, daul in-line memory module)로 지칭되는 단일 저장 유닛을 형성한다. 각 메모리 칩은 디멀티플렉서 레지스터와 전기적으로 통신한다. 소정의 실시예에서, 메모리 칩들은 DRAM 칩들이다. 도 4a는 본 발명의 실시예들에 따른, 인쇄 회로 기판(412) 상에 실장된 8 개의 DRAM 칩들(401 내지 408) 및 디멀티플렉서 레지스터(410)를 포함하는 단일 MCDIMM(400)의 등측도이다. 각 DRAM 칩(401 내지 408)은 별도의 신호 라인 세트(미도시)를 통해서 디멀티플렉서 레지스터(410)와 전기적으로 통신한다. 이 신호 라인 세트는 디멀티플렉서 레지스터(410)로 하여금 각 DRAM 칩(401 내지 408)에 명령들을 개별적으로 전송하게 할 수 있는 명령 버스를 포함한다.
하나 이상의 MCDIMM은 회로 기판 상에 탑재되어서 메모리 제어기에 의해서 제어될 수 있다. 도 4b는 본 발명의 실시예들에 따른, 회로 기판(418) 상에 탑재된 메모리(414) 및 메모리 제어기(416)의 등측도이다. 메모리(414)는 DIMM 슬롯(424 내지 427) 내로 각기 삽입되는 MCDIMM(420 내지 423)을 포함한다. 인터페이스(428)는 메모리 모듈(420 내지 423)의 디멀티플렉서 레지스터들과 메모리 제어기(416)를 서로 전자적으로 접속시킨다. 인터페이스(428)는 메모리 제어기(416)에서 메모리(414)로 명령 신호를 반송하는 버스 및 메모리 제어기(416)와 메모리(414) 간에서 데이터 신호를 반송하는 데이터 버스를 포함한다. 이러한 아키텍처에서, 메모리 제어기(416)로부터 전송된 명령들은 메모리(414)의 DRAM 칩들로 브로드캐스트되지 않는다. 이 대신에, 메모리 제어기(416)는 어느 DRAM 칩이 VMD를 포함할지를 지정하는 인스트럭션들이 내장된 메모리 구성 명령을 메모리 모듈(420 내지 423)의 디멀티플렉서 레지스터들에 전송한다. 달리 말하면, 메모리 제어기(416)는 하나 이상의 DRAM 칩들을 각 VMD로 그룹화하여서 메모리 요청을 서비스한다. 각 가상 메모리 디바이스 VMD는 메모리 제어기(416)로/로부터 데이터를 독립적으로 전달하기 위해서 자신의 고유의 데이터 버스를 갖는다. VMD가 상기 메모리 구성 명령에 따라서 구성되면, 메모리 제어기(416)는 메모리 요청을 나타내는 명령들을 MCDIMM(420 내지 423)의 VMD에 전송하기 시작한다. 다른 실시예에서, 2 개 이상의 메모리 구성 명령들의 시퀀스가 사용되어서 MCDIMM의 구성을 변화시킨다.
메모리 모듈당 VMD의 개수가 증가하면, 데이터 액세스당 소비되는 에너지는 감소한다. 그러나, VMD의 개수가 증가하면 VMD가 몇 개 안 되는 경우와 비교하여서 동일한 데이터 양을 추출하는데 필요한 시간의 양을 증가하게 되는데, 그 이유는 VMD당 메모리 칩의 개수가 감소하면 데이터 버스의 폭이 감소하기 때문이다. VMD의 구성을 결정하는 많은 방식이 있다. 일 실시예에서, 메모리 모듈당 VMD의 개수가 머신 부트-업 타임 동안 선택될 수 있다. 가령, 운영 체제는 컴퓨터 시스템 상에서 통상적으로 실행될 수 있는 특정 애플리케이션의 에너지 사용 정도 및 메모리의 이력을 유지할 수 있다. 이어서, 운영 체제는 시스템 성능과 에너지 효율 간에 균형을 유지하도록 부트-업 타임 시에 VMD의 개수를 조절할 수 있다. 다른 실시예에서, VMD의 개수는 애플리케이션의 실행 동안 동적으로 변할 수 있다. 가령, 애플리케이션은 자신의 실행 동안에 컴퓨터 시스템 및 에너지 효율을 모니터링하고 에너지 효율 요구 사항에 따라서 변하는 메모리 요구 사항을 만족시키도록 VMD의 개수를 조절할 수 있다. 다른 실시예에서, 컴퓨터 시스템 운영자가 컴퓨터 시스템의 성능 및 에너지 효율을 모니터링하고 이에 따라서 VMD의 개수를 변경시킬 수 있다. 이 모든 3 개의 경우에, 시스템 성능이 에너지 효율보다 높은 우선 순위를 가지면 VMD의 개수는 감소하고, 에너지 효율이 시스템 성능보다 높은 우선 순위를 가지면 VMD의 개수는 증가한다. 또한, 시스템 성능과 에너지 효율 간의 균형에 이르도록 VMD의 개수는 주기적으로 조절될 수 있다.
소정의 실시예들에서, 컴퓨터 시스템 내의 모든 메모리 모듈들은 동일한 개수의 VMD들로 해서 구성될 수 있다. 다른 실시예에서, 각 메모리 모듈은 서로 다른 개수의 VMD로 해서 구성될 수 있으며 이 VMD들은 서로 다른 개수의 메모리 칩들을 가질 수 있다. 도 5a 내지 도 5e는 본 발명의 실시예들에 따른, 동일한 MCDIMM의 메모리 칩들을 2 개의 서로 다른 그룹으로 그룹화한 전반적인 개략도이다.
도 5a는 본 발명의 실시예들에 따른, 디멀티플렉서 레지스터(502) 및 제 1 VMD 구성을 포함하는 MCDIMM(500)의 전반적인 개략도이다. MCDIMM(500)은 n 개의 메모리 칩들을 포함하며, 여기서 n은 정수이다. 도 5a에서, n 개의 메모리 칩 중 8 개의 메모리 칩들이 MC로서 표시되어 있고, 각 메모리 칩은 양의 정수를 표현하는 하위의 인덱스를 포함하고 있다. 소정의 실시예들에서, 메모리 칩들은 DRAM 칩들일 수 있다. 도 5a는 N 개의 VMD로 그룹화된 메모리 칩들을 나타내고 있으며, 여기서 N은 정수이다. 도 5a에서는 N 개의 그룹들 중 4 개의 그룹이 나타나 있고 VMDK로 표시되어 있으며, 여기서 아래 첨자 K는 0 내지 N-1에 속하는 정수이다. 가령, 도 5a에 도시된 바와 같이, VMD0은 MC0 내지 MCg를 포함하고, VMDK은 MCh 내지 MCi를 포함하고, VMDK +1은 MCj 내지 MCk를 포함하고, VMDN -1은 MCv 내지 MCn - 1를 포함하고, 여기서 g,h,i,j,k 및 m은 0 ≤ g < h ≤ i < j ≤ k < m ≤ n-1이다.
각 메모리 칩은 신호 라인들을 통해서 디멀티플렉서 레지스터(502)에 전자적으로 접속된다. 가령, 방향 지시 화살표(504 내지 511)는 각기 MC0, MCg, MCh, MCi, MCj, MCk, MCm, 및 MCn -1 에 디멀티플렉서 레지스터(502)를 전자적으로 접속시키는 개별 신호 라인 세트들을 나타낸다. 이 신호 라인 세트들은 명령 버스를 포함한다. 메모리 제어기(미도시)는 VMD의 개수를 선택하고 특히 운영 체제, 애플리케이션 또는 컴퓨터 시스템 운영자에 의해서 제공된 인스트럭션에 기초하여서 VMD당 메모리 칩들의 개수를 선택한다. 메모리 제어기는 초기에 명령 경로로 지칭되는 신호 라인 세트(512)를 통해서 메모리 구성 명령을 디멀티플렉서 레지스터(502)에 직접적으로 전송한다. 이 메모리 구성 명령은 도 5a에 도시된 바와 같이 메모리 칩들을 그룹화하도록 디멀티플렉서 레지스터(502)에게 지시하는 인스트럭션을 포함한다. 각 VMD는 최소 log2 n 비트를 포함하는 해당 VMD 어드레스를 갖는다. 후속 메모리 요청 명령은 VMD 어드레스를 포함한다. 가령, 메모리 제어기가 VMD0에 대한 메모리 요청을 나타내는 명령을 전송할 때에, 메모리 제어기는 그 명령 내에 VMD0의 어드레스를 포함시킨다. 디멀티플렉서 레지스터(502)가 이 명령을 수신하면, 디멀티플렉서 레지스터(502)는 이 명령을 VMD0의 메모리 칩 상으로 전송한다. 가령, MC0 및 MCg가 신호 라인 세트(504,505)에 걸쳐서 디멀티플렉서 레지스터(502)로부터 명령을 수신하는 VMD0에 포함되는 2 개의 메모리 칩들이다. 각 VMD는 도 5a에서 DQ 및 이중 방향 화살표(514)로 표시된 바와 같은 개별 데이터 버스를 통해서 메모리 제어기와 데이터를 교환한다.
디멀티플렉서 레지스터(502)는 다수의 상이한 방식으로 구성될 수 있다. 도 5b는 본 발명의 실시예들에 따라서 구성된 디멀티플렉서 레지스터(516)의 개략적 구성을 나타내고 있다. 디멀티플렉서 레지스터(516)는 0 내지 n-1로 표시된 바와 같은 n 개의 명령 선택기 및 브로드캐스트 버스(518)를 포함하며, 여기서 하나의 명령 선택기는 도 5a에 도시된 n 개의 메모리 칩 각각에 대한 것이다. 이 명령 선택기들은 브랜치(520 내지 528)를 통해서 브로드캐스트 버스(518)에 전자적으로 접속되고, 각 명령 선택기는 도 5a를 참조하여서 상술된 명령 버스를 포함하는 신호 라인 세트들(504 내지 511)을 통해서 하나 이상의 메모리 칩들에 접속된다. 도 5c에서, 도 5a에 도시된 신호 라인 세트들(504 내지 511)이 도 5a에 도시된 대응하는 메모리 칩들의 인덱스로 표시되어 있다. 메모리 제어기는 도 5a에 도시된 명령 경로(512)를 통해서 시분할 멀티플렉싱된 명령들을 전송한다. 달리 말하면, 각 명령은 비트 스트림 내에서 인코딩되고 고정된 지속 시간 슬롯으로 해서 명령 제어기로부터 디멀티플렉서 레지스터(516)에 전송된다. 도 5b에서, 타임 슬롯들은 일련의 직사각형(531 내지 534)으로 표시된다. 각 명령은 그 명령을 수신하도록 의도된 도 5a에서의 VMD의 인덱스를 포함한다. 이 명령들이 디멀티플렉서 레지스터(516)로 전송되는 순서는 메모리 제어기에 의해서 결정된다. 따라서, 이러한 명령들은 도 5b에서 그러한 순서로 나타난다. 수행될 특정 종류의 동작을 식별하는 제어 신호, 뱅크, 행 또는 열을 식별하는 어드레스 신호 및 메모리 제어기에 의해서 할당된 VMD 어드레스가 그 명령 내에 내장된다.
디멀티플렉서 레지스터(516)에 전송된 각 명령은 n 개의 모든 명령 선택기들에 브로드캐스트된다. 각 명령 선택기는 그 명령이 VMD의 해당 메모리 칩들 상으로 전송되어야 하는지의 여부 또는 그 명령이 폐기된 경우에 그 명령이 다른 VMD로 전송되어야 하는지의 여부를 판정하기 위해서 그 명령 내에 내장된 VMD 어드레스를 추출하도록 구성된다. 따라서, 모든 n 개의 명령 선택기에 브로드캐스트된 각 명령에 대해서, 이 명령은 메모리 제어기에 의해서 선택된 VMD를 포함하는 메모리 칩들로만 메모리 선택기에 의해서 전송된다. 가령, 디멀티플렉서 레지스터(516)는 명령 N-1(531)를 수신하여서 이를 모든 n 개의 명령 선택기(0 내지 n-1)에 브로드캐스트한다. 그러나, 명령 N-1(531)이 VMDN -1의 어드레스를 포함하기 때문에, 명령 선택기(m 내지 n-1)가 이 명령 N-1(531)을 신호 라인(510, 511)을 포함하는 신호 라인 세트들(536)을 통해서 VMDN -1의 대응하는 메모리 칩들에 전송한다. 각 명령은 후속 명령이 처리되기 이전에 특정 기간 내에서 디멀티플렉서 레지스터(516)에 의해서 개별적으로 처리된다.
도 5c는 본 발명의 실시예들에 따라 구성된 명령 선택기 m의 개략도이다. 다른 n-1 개의 명령 선택기는 이와 동일한 구성을 갖는다. 명령 선택기 m은 VMD 어드레스 제어부(540), 구성 레지스터(542), 레지스터/카운터(544) 및 RAM 타이밍 제어부(546)를 포함한다. 명령들이 도 5b에 도시된 바와 같은 브랜치(526)를 통해서 명령 선택기 m에 입력된다. VMD 어드레스 제어부(540)는 각 명령 내에 내장된 VMD 어드레스를 추출한다. 구성 레지스터(542)는 도 5a에 도시된 신호 라인(510)에 접속된 VMDN -1의 현 VMD 어드레스를 저장한다. 이 구성 레지스터(542)는 VMDN -1의 VMD 어드레스를 VMD 어드레스 제어부(540)에 래치할 시간을 판정하기 위한 클록 신호를 수신한다. VMD 어드레스 제어부(540)는 이 추출된 VMD 어드레스를 VMDN -1의 VMD 어드레스와 비교하고, 서로 일치하면 선택 신호를 레지스터/카운터(544)에 전송한다. 이 레지스터/카운터(544)는 그 명령을 임시 저장하여서 상기 선택 신호가 매 상승 및/또는 하강 클록 에지 상에서 VMD 어드레스 제어부(540)로부터 수신되면 대응하는 메모리 MCm으로 그 명령을 전송하는 버퍼이다.
레지스터/카운터(544)는 카운터를 포함한다. VMD의 DRAM 칩이 캐시 라인의 판독 또는 기록 트랜잭션과 연관된 긴 버스트 길이를 지원할 수 없을 때에 카운터들이 필요하다. 디멀티플렉서 레지스터는 이 캐시 라인을 캐시-라인 세그먼트들로 분할하고 그 명령을 각각이 캐시-라인 세그먼트에 대응하는 다수의 명령들로 변환시킨다. 따라서, VMD에 전송된 각 캐시-라인 세그먼트는 카운터에 의해서 전송된 대응하는 명령을 후행한다. 가령, VMD의 하나 이상의 DRAM 칩들의 버스트 길이가 캐시 라인을 감당하기에 충분하게 길게 설정되면, 카운터는 판독 또는 기록 동작과 같은 열 레벨 명령을 각 캐시-라인 세그먼트가 DRAM 칩으로/으로부터 개별적으로 기록되거나/판독될 수 있도록 각 캐시-라인 세그먼트에 대한 다수의 판독/기록 명령으로 변환시킨다. 각 카운터는 분할된 캐시 라인에 대해서 생성된 명령들의 개수를 추적하는 카운팅 디바이스를 포함한다. 이 카운터에 의해서 수행되는 변환 동작은 메모리 제어기로부터 명령 대역폭을 절감시킨다. RAM 타이밍 제어부(548)는 레지스터/카운터의 카운터 부분을 제어한다.
도 5a에 도시된 MCDIMM(500)의 N 개의 VMD의 구성은 메모리 제어기에서 디멀티플렉서 레지스터(502)로 제 2 메모리 구성 명령을 전송함으로써 변화될 수 있다. 이 제 2 메모리 구성 명령에는 상이한 부트-업 타임 동안에 선택되거나, 애플리케이션의 런칭 이후에 시간이 지나서 선택되거나, 애플리케이션의 실행 동안에 선택되거나, 컴퓨터 시스템 운영자에 의해서 선택될 수 있는 상이한 메모리 요구 사항 세트에 따라서 VMD들을 그룹화시키도록 디멀티플렉서 레지스터(502)에게 지시하는 인스트럭션들이 내장되어 있다.
도 5d는 본 발명의 실시예들에 따른, 제 2 VMD 구성을 갖는 MCDIMM(500)의 전반적인 개략도이다. 이 MCDIMM(500)은 동일한 n 개의 메모리 칩들을 포함하지만, 도 5d에서는, 메모리 제어기는 VMD의 개수 및 VMD 당 메모리 칩의 개수를 재구성하였다. 특히, 8 개의 메모리 칩들 중 4 개의 인덱스는 VMD를 포함하는 메모리 칩들을 상이하게 그룹화시킨 바를 나타내도록 변경되었다. 도 5d에서, 메모리 칩들은 M 개의 VMD로 그룹화되며, 여기서 M은 수 N과는 상이한 정수이다. VMD 중 4 개는 도 5d에서 VMD'L로 표시되며, 여기서 아래 첨자 L은 0 내지 M-1에 속하는 정수이다. 도 5d에 따른 메모리 칩 그룹화 방식과 도 5a에 따른 메모리 칩 그룹화 방식을 서로 비교하면, VMD'0은 MC0 내지 MCs를 포함하고, 여기서 정수 s는 정수 g와는 상이하며, VMD'L은 MCt 내지 MCi를 포함하고, 여기서 정수 t는 정수 h와는 상이하며, VMD'L +1은 MCj 내지 MCu를 포함하고, 여기서 정수 u는 정수 k와는 상이하며, VMD'M -1은 MCv 내지 MCn - 1를 포함하고, 여기서 정수 v는 정수 m와는 상이하다. 방향 표시 화살표(550 내지 553)는 디멀티플렉서 레지스터(502)를 각기 MCs, MCt, MCu 및 MCv에 전자적으로 접속시키는 개별 신호 라인 세트들을 나타낸다.
디멀티플렉서 레지스터(516)는 본질적으로 변하지 않게 유지되며 제 2 메모리 구성 명령이 각 명령 선택기의 구성 레지스터를 재구성한다는 점을 제외하면 도 5b을 참조하여 전술된 바와 동일한 방식으로 동작한다. 도 5e는 도 5b를 참조하여 전술된 바와 같이 구성된 제 2 디멀티플렉서 레지스터(516)를 나타낸다. 도 5b를 참조하여 전술한 바와 같이, 디멀티플렉서 레지스터(516)에 전송된 각 명령은 모든 n 개의 명령 선택기들로 브로드캐스트된다. 각 명령 선택기의 VMD 어드레스 제어는 그 명령이 VMD의 해당 메모리 칩들 상으로 전송되어야 하는지의 여부 또는 그 명령이 폐기된 경우에 그 명령이 다른 VMD로 전송되어야 하는지의 여부를 판정하기 위해서 도 5d에 도시된 바와 같이 그 명령 내에 내장된 VMD 어드레스를 추출하도록 재구성된다. 가령, 디멀티플렉서 레지스터(516)는 명령 M-1(561)를 수신하여서 이를 모든 n 개의 명령 선택기(0 내지 n-1)에 브로드캐스트한다. 그러나, 명령 M-1(561)이 VMDM -1의 어드레스를 포함하기 때문에, 명령 선택기(v 내지 n-1)가 이 명령 M -1(561)을 신호 라인(565, 511)을 포함하는 신호 라인 세트들(532)을 통해서 VMDM-1의 대응하는 메모리 칩들에 전송한다. 나머지 명령 선택기들은 명령 M-1(561)을 폐기한다.
통상적인 판독 또는 기록 명령은 VMD의 몇 개의 메모리 칩들에 걸쳐서 데이터를 분포시키는 동작과 연관된 메모리 요청이다. 선행하는 구성 하에서 MCDIMM 내에 이미 저장된 데이터를 복구할 필요 없이 가변하는 성능 및 에너지 효율 요구 사항들에 따라서 VMD들을 재구성하게 되면 그 데이터는 검색될 수 없게 되어 버린다. 따라서, 본 발명에 따른 방법 실시예에서는, 메모리 모듈의 VMD를 재구성하기 이전에, VMD에 이미 저장된 데이터가 페치되어서 다른 메모리 디바이스에 임시 저장된다. VMD가 재구성된 후에, 이 데이터는 새로운 VMD 구성을 갖는 메모리 모듈 내에 다시 저장된다.
상술한 바와 같이, 시스템 성능 요구 사항 및/또는 에너지 효율 요구 사항에 기초하여서 필요한 메모리 양에서의 변경 사항을 수용하도록 VMD로 메모리 칩들을 그룹화시키는 상이한 방식들이 선택되었다. 도 5a 내지 도 5d를 참조하여서 기술된 메모리 칩들은 디멀티플렉서 레지스터(516)의 명령 선택기들과 1 대 1 맵핑하는 단일 메모리 칩들이었다. 그러나, 본 발명의 실시예들은 이로만 한정되는 것은 아니다. 다른 실시예에서, 메모리 칩들보다 명령 선택기의 수가 더 적을 수 있다. 가령, 도 5에서 메모리 칩들 MC0, MCg, MCh , MCi, MCj, MCk, MCm 및 MCn -1은 단일 명령 선택기와 전기적으로 통신하는 2 개 이상의 메모리 칩들의 스택을 나타낼 수 있다. 다음은 본 발명의 실시예들에 따라서 VMD가 재구성될 수 있는 방식을 기술하는, 8 또는 16 개의 DRAM 칩들을 갖는 예시적인 MCDIMM에 대한 설명이다.
도 6a는 본 발명의 실시예들에 따라서 구성된 MCDIMM(600)의 개략도이다. 도 6a에 도시된 바와 같이, MCDIMM(600)은 디멀티플렉서 레지스터(602) 및 8 개의 VMD를 포함하며, 각 VMD는 0 내지 7로 표시된 단일 DRAM 칩을 포함한다. 제 1 VMD 구성은 부트-업 타임 시에 또는 애플리케이션의 실행 동안의 일 시점에서 필요하거나 컴퓨터 시스템 운영자가 선택한 메모리 양을 평가한 결과일 수 있다. 방향 표시 화살표(604 내지 611)는 DRAM 칩(0 내지 7) 각각을 각기 디멀티플렉서 레지스터(602)에 전자적으로 접속시키는 8 개의 개별 신호 라인 세트들을 나타낸다. 명령들이 명령 경로(612)를 통해서 메모리 제어기(미도시)에서 디멀티플렉서 레지스터(602)로 전송된다. log2 N(여기서, N은 8과 동일함)에 따라서, 각 DRAM 칩(0 내지 7)은 8 개의 3 비트 어드레스 000, 001, 010, 011, 100, 101, 110 및 111 중 하나에 각기에 할당된다. 각 DRAM 칩(0 내지 7)은 명령 버스의 대응하는 신호 라인 세트를 통해서 상이한 명령들을 수신하여서 다른 DRAM 칩들과 독립적으로 데이터를 도 6a에서 DQ 및 이중 방향 화살표(614)로 표시된 바와 같은 자신의 고유 데이터 버스를 통해서 전송한다.
이 MCDIMM이 지원할 수 있는 최대 VMD 개수 N은 8 개이며, 이 8 개는 또한 디멀티플렉서 레지스터(602)에서 필요한 명령 선택기들의 개수이기도 하다. 도 6b는 8 개의 VMD를 갖는 MCDIMM(600)를 지원하는데 있어서 디멀티플렉서 레지스터(602) 대신에 사용될 수 있는 명령 선택기(0 내지 7) 및 브로드캐스트 버스(618)를 포함하는 디멀티플렉서 레지스터(616)를 나타내고 있다. 각 명령은 모든 8 개의 명령 선택기들에 브로드캐스트된다. 도 6b에서, 이 명령과 연관된 각 타임 슬롯은 그 명령을 수신하도록 의도된 도 6a의 DRAM 칩의 인덱스를 포함하는 직사각형에 의해서 표현된다. 각 명령 선택기는 그 명령이 접속된 메모리 칩들 상으로 전송되어야 하는지의 여부 또는 그 명령이 폐기된 경우에 그 명령이 다른 DRAM 칩으로 전송되어야 하는지의 여부를 판정하기 위해서 그 명령 내에 내장된 VMD 어드레스를 추출하도록 구성된다. 가령, 디멀티플렉서 레지스터(616)는 명령 5(620)를 수신하여서 브로드캐스트하며, 이 명령은 DRAM 칩(5)에 대해서 브로드캐스트 버스(618)를 통해서 모든 8 개의 명령 선택기로 향한다. 명령 5(620)가 DRAM 칩(5)의 어드레스를 포함하기 때문에, 명령 선택기(5)가 신호 라인 세트(609)를 통해서 명령(5)을 DRAM 칩(5)으로 전송하고 다른 명령 선택기들은 명령 5(620)를 폐기한다.
도 6c는 본 발명의 실시예들에 따라 구성된 명령 선택기(5)의 개략도이다. 본 설명은 8 개의 VMD와 동일한 최대 개수 N을 갖는 실시예에 관한 것이다. 따라서, log2 8 비트 어드레스, 즉 3 비트 어드레스 000, 001, 010, 011, 100, 101, 110 및 111가 각 DRAM 칩(0 내지 7)을 각기 식별하기 위해서 명령 내에서 사용될 수 있다. 명령 선택기(5)는 VMD 어드레스 제어부(622), 레지스터/카운터(624), RAM 타이밍 제어부(626) 및 구성 레지스터(628)를 포함한다. 다른 명령 선택기의 구성도 이와 유사하다. 명령들이 도 6b에도 도시된 브랜치(630)를 통해서 명령 선택기(5)에 입력된다. VMD 어드레스 제어부(622)는 AND 게이트(632), 3 개의 OR 게이트(633 내지 635) 및 인버터(636)를 더 포함한다. VMD 어드레스 제어부(622)는 각 명령의 VMD 어드레스 부분을 추출한다. 3 개의 어드레스 신호 라인(A2,A1,A0) 각각은 추출된 3 비트 VMD 어드레스 중 1 비트를 반송한다. 신호 라인(A1) 상의 비트는 인버터(636)를 통과한다. 구성 레지스터(628)는 신호 라인(B2,B1,B0)을 통해서 3 비트를 출력하며, 여기서 A2 및 B2는 OR 게이트(633)에 대한 입력이며, A1 및 B1은 OR 게이트(634)에 대한 입력이며, A0 및 B0은 OR 게이트(635)에 대한 입력이다. OR 게이트(633 내지 635)의 출력(C2,C1,C0)은 AND 게이트(632)에 대한 입력이다. AND 게이트(632)는 모든 입력 신호가 비트 1에 대응하면 비트 1에 대응하는 신호를 출력하고 입력 신호 중 적어도 하나가 0 비트에 대응하면 비트 0에 대응하는 신호를 출력하며, 여기서 비트 1 및 비트 0은 각기 고 전압 신호 및 저 전압 신호를 나타낸다. 한편, OR 게이트(633 내지 635) 각각은 모든 입력 신호가 0일 때에만 비트 0을 출력하고 입력 중 적어도 하나가 비트 1이면 비트 1을 출력한다. 인버터는 비트 1을 비트 0으로 변환하거나 비트 0을 비트 1로 변환한다.
본 실시예에서, VMD 구성 레지스터(628)는 자신이 상주하는 명령 선택기가 입력 명령 내에 지정된 VMD를 포함하는 명령 선택기들 중 하나인지의 여부를 판정할 시에 사용될 비트 마스크(VMD 어드레스와 동일한 개수의 비트 log2 N을 구비함)를 보유한다. 이 비트 마스트 내의 0 비트는 VMD 어드레스의 (동일한 위치 내의) 대응하는 비트가 상위 비트가 되게 하며, 이 비트 마스트 내의 1 비트는 VMD 어드레스의 대응하는 비트가 상위 비트가 아닌 비트가 되게 하는데, 즉 중요하지 않은 비트가 되게 하는데, 이 중요하지 않은 비트는 이 VMD 어드레스 비트는 명령 선택기의 출력에 어떠한 영향도 주지 않음을 의미한다. 도 6a에 도시된 VMD 구성의 경우에, 구성 레지스터(628)는 신호 라인들(B2,B1,B0)을 통해서 VMD 어드레스 비트들을 언제나 출력한다. 가령, 추출된 VMD 어드레스가 DRAM 칩(5)의 3 비트 VMD 어드레스인 비트 "101"를 포함한다고 가정하자. 인버터(636)는 신호 라인(A1)을 통해서 반송된 신호의 전압을 반전시킨다. 이로써, 인버터(536) 이후의 신호 라인들(A2,A1,A0)은 비트 "111"를 반송하고, OR 게이트(633 내지 635)의 출력 라인들은 비트 "111"을 AND 게이트(632)로 반송한다. AND 게이트(632)는 비트 1을 나타내는 선택 신호를 레지스터/카운터(624)에 출력함으로써 이에 응답하며, 이 레지스터/카운터(624)는 클록에 의해서 표시될 때에 신호 라인 세트(609) 상으로 명령을 래치한다. 다른 어드레스에 대해서는, 구성 레지스터(628)가 비트 "000"을 출력하기 때문에, AND 게이트(632)에 진입하는 비트 스트림은 적어도 하나의 0 비트를 포함한다. 따라서, AND 게이트(632)는 어떠한 신호도 출력하지 않거나 비트 0에 대응하는 저 전압 신호를 출력하고, 레지스터/카운터(624)는 그 명령을 신호 라인 세트(609) 상으로 래치하지 않는다.
도 6a에서, 오직 하나의 DRAM 칩만이 메모리 액세스 요청마다 개입된다. DRAM 칩들(0 내지 7)의 공유된 영역은 상이한 명령들과 연관된 상이한 독립적 메모리 요청들을 나타낸다. 각 DRAM 칩은 명령 버스를 통해서 명령을 수신하고 자신의 고유한 데이터 버스를 통해서 데이터를 독립적으로 전송한다. 따라서, 보다 소수의 비트가 활성화될수록, 활성화 및 사전 충전을 위한 에너지가 절감된다. 그러나, 데이터를 전달하기 위해서, 데이터는 보다 작은 데이터의 직렬화된 부분들로 분할되며, 이 각 부분은 DRAM 칩에서 메모리 제어기로 개별적으로 전송된다. 이렇게 데이터를 직렬화하면 대형 데이터 버스를 통해서 데이터를 전송하는 방식에 비해서 데이터를 전송하는데 필요한 시간이 증가한다. 이러한 직렬화 레이턴시 문제는 시스템 성능에 부정적인 영향을 줄 수 있다. 데이터를 전달하는데 필요한 시간이 소정의 VMD 내의 메모리 칩들의 개수를 증가시킴으로써 줄어들 수 있다는 바는 운영 체제, 애플리케이션 또는 시스템을 모니터링하는 컴퓨터 시스템 운영자에 의해서 판정될 수 있다. 도 5a 내지 도 5e을 참조하여서 상술한 바와 같이, 본 발명의 실시예들은 2 개 이상의 DRAM 칩들로 구성된 그룹들을 갖는 VMD로 MCDIMM(600)를 재구성함으로써 운영 체제, 애플리케이션 또는 컴퓨터 시스템 운영자로 하여금 상기 직렬화 레이턴시 문제를 완화시키도록 하게 하고 있다.
도 6a에 도시된 MCDIMM(600)의 VMD 구성은 메모리 구성 명령을 메모리 제어기(미도시)에서 디멀티플렉서 레지스터(602)에 전송함으로써 변경될 수 있다. 이 구성 명령에는 상이한 메모리 요구 사항 세트에 따라서 VMD들을 그룹화시키도록 각 명령 선택기의 구성 레지스터를 지시하는 인스트럭션들이 내장되어 있다. 이 메모리 요구 사항들은 애플리케이션의 실행 동안의 일 시점에서 선택될 수 있는 애플리케이션의 실행 동안 결정될 수 있는 최종 가변적 메모리 요구 사항이나, 그 애플리케이션과 연관된 메모리 요구 사항들의 이력에 따라서 부트-업 타임 동안에 결정될 수 있는 최종 가변적 메모리 요구 사항이나, MCDIMM(600)의 성능 및 에너지 효율을 모니터링하는 컴퓨터 시스템 운영자에 의해서 결정되는 최종 가변적 메모리 요구 사항일 수 있다. 이러한 가변적 메모리 요구 사항들은 메모리 모듈의 성능과 에너지 효율 간의 균형을 유지할 시에 변경 결과일 수 있다.
도 6a에 도시된 VMD 구성 하에서 MCDIMM(600) 내에 이미 저장된 데이터는 MCDIMM(600)이 재구성되는 동안에 페치되어서 상이한 저장 디바이스에 임시 저장된다. MCDIMM(600)이 재구성된 후에, 이 임시 저장된 데이터는 상기 재구성된 MCDIMM(600) 내에 기록된다.
도 7a는 각기 VMD 어드레스 00, 01, 10 및 11을 갖는 VMD'0, VMD'1, VMD'2, VMD'3으로서 식별된 4 개의 VMD로 그룹화된 DRAM 칩(0 내지 7)을 갖는 MCDIMM(600)의 개략도이다. 각 VMD는 2 개의 DRAM 칩들을 포함한다. 각 VMD는 QD 및 이중 방향 화살표(702)에 의해서 표시된 자신의 고유 데이터 버스를 통해서 다른 VMD와 무관하게 데이터를 전달한다. 이러한 구성을 갖는 MCDIMM(600)을 사용하기 위해서, 메모리 제어기는 메모리 구성 명령을 디멀티플렉서 레지스터(602)에 전송한다. 이 디멀티플렉서 레지스터(602)는 새로운 비트 마스크로 해서 구성 레지스터를 재구성함으로써 이에 응답한다. 디멀티플렉서 레지스터(602)는 메모리 요청을 갖는 후속 명령들을 도 6b 및 도 6c을 참조하여서 상술한 바와 동일한 방식으로 VMD에 전송한다. 가령, VMD'1에 전송된 명령은 VMD'1 의 VMD 어드레스를 포함한다. 디멀티플렉서 레지스터(602)는 도 6b 및 도 6c을 참조하여서 상술한 바와 동일한 방식으로 명령을 수신하여서 DRAM 칩(2,3)에만 전송한다.
도 7a에 도시된 VMD 구성의 경우에, 재구성 레지스터(628)는 신호 라인(B2,B1,B0)을 통해서 VMD 어드레스를 언제나 출력한다. 이는 각 명령 선택기(0 내지 7) 내의 구성 레지스터에도 적용된다. 라인(A0, B0)은 VMD 어드레스의 가장 우측에 있는 비트나 1로 된 비트를 반송하고 이 비트는 최하위 비트 LSB로 지칭된다. LSB는 OR 게이트(635)에 입력된다. 구성 레지스터(628)로부터 출력된 LSB가 1이면, LSB VMD 어드레스 비트는 무시된다. 가령, 구성 레지스터(628)로부터 출력된 LSB가 1이면, 레지스터/카운터(624)는 추출된 VMD 어드레스가 100 또는 101인 경우에 AND 게이트(632)로부터 선택 신호를 수신한다. 제 1의 2 개의 비트 10은 VMD'2의 VMD 어드레스에 대응한다. MCDIMM이 현 구성에 있는 동안에 상기 VMD 어드레스의 LSB는 무시되고 어떠한 영향도 주지 않는다.
MCDIMM(600)이 통상적인 MCDIMM으로서 동작하고 모든 DRAM 칩들이 단일 VMD를 포함하는 다른 실시예에서, 비트 "111"을 출력하도록 명령 선택기(0 내지 7)의 구성 레지스터를 지시하는 메모리 구성 명령이 각 명령 선택기의 구성 레지스터에 전송된다. 이러한 구성에서, VMD 어드레스 제어부(622)에 의해서 생성된 선택 신호는 언제나 "1"이다.
VMD는 동일한 개수의 메모리 칩들을 갖는 것으로 한정되지 않는다. VMD들은 서로 상이한 메모리 칩들을 갖도록 재구성될 수 있다. 도 7b는 본 발명의 실시예에 따라서 4 개의 VMD로 그룹화된 DRAM 칩들을 갖는 MCDIMM(600)의 개략도이다. 도 7b에 도시된 바와 같이, DRAM 칩들(0 내지 3)은 VMD"0으로 그룹화되고, DRAM 칩들(4 내지 6)은 VMD"1로 그룹화되고, VMD"2 및 VMD"3은 각기 DRAM 칩(6) 및 DRAM 칩(7)을 포함한다. 도 6c에 도시된 명령 선택기의 실시예는 상이한 비트 마스크가 명령 선택기들의 구성 레지스터 내에 저장되게 함으로써 메모리 제어기의 제어 하에서 이를 가능하게 한다.
도 8은 본 발명의 실시예들에 따른, 디멀티플렉서 레지스터(802)에 전자적으로 접속된 16 개의 DRAM 칩들(0 내지 15)을 포함하는 MCDIMM(800)의 개략도이다. 디멀티플렉서 레지스터(802)는 각 명령 선택기가 DRAM 칩들의 쌍에 전자적으로 접속된 8 개의 명령 선택기들을 포함한다. 가령, 명령 선택기(0)는 DRAM 칩들(0,8)의 쌍에 전자적으로 접속된다. DRAM 칩들의 각 쌍은 DRAM 칩 스택을 나타낸다. 스택된 DRAM 칩들의 각 쌍의 데이터 라인들은 함께 접속되며 어드레스 비트는 그들 중 2 개를 선택한다.
도 9는 본 발명의 실시예들에 따른, 메모리 모듈의 VMD를 제어 및 재구성하는 방법의 제어 흐름도이다. 단계(901)에서, 메모리 모듈의 VMD를 구성하기 위한 인스트럭션들을 갖는 메모리 구성 명령이 생성되어 메모리 제어기에서 메모리 모듈로 전송된다. 단계(902)에서, 디멀티플렉서 레지스터의 구성 레지스터가 도 5c 내지 도 5e 및 도 6 및 도 7을 참조하여서 상술된 바와 같이 메모리 재구성 명령에 따라서 구성된다. 단계(903)의 포 루프(for-loop)에서, 각 메모리 요청에 대해서 단계들(903 내지 908)이 반복된다. 단계(904)에서, 메모리 제어기는 VMD의 어드레스를 명령 내에서 인코딩함으로써 VDM 중 하나에 의해서 수신될 명령을 준비한다. 단계(905)에서, 메모리 제어기는 그 명령을 메모리 모듈의 디멀티플렉서 레지스터에 전송한다. 이 명령은 도 5a을 참조하여서 상술한 바와 같은 명령 경로를 통해서 디멀티플렉서 레지스터에 의해서 수신된다. 단계(906)에서, 디멀티플렉서 레지스터는 도 5b 및 도 5c를 참조하여서 상술한 바와 같이 어느 VMD가 그 명령을 수신할지를 판정한다. 단계(907)에서, 디멀티플렉서 레지스터는 도 5b 및 도 5c를 참조하여서 상술한 바와 같이 그 명령을 VMD로 전송할 적합한 신호 라인 세트를 선택한다. 단계(908)에서, 각 메모리 요청이 모니터링되고, 현 VMD 구성이 적합한 저장 능력을 제공하며 에너지 효율 요구 사항을 만족시키는지의 여부를 평가하기 위해서 시스템 성능 및 에너지 효율에 대한 정보가 수집된다. 단계(909)에서, 현 VMD 구성이 적합한 저장 능력을 제공하거나 에너지 효율 요구 사항을 만족시키는데에 실패하면, 이 방법은 단계(910)로 진행하고 그렇지 않으면 단계(911)로 진행한다. 단계(910)에서, 상이한 VMD 구성이 부트-업 타임 시에 운영 체제에 의해서 결정되거나, 애플리케이션의 실행 동안 애플리케이션에 의해서 결정되거나, 컴퓨터 시스템 운영자에 의해서 결정된다. 단계(911)에서, 이 방법은 단계(901)로 진행하고 단계(901 내지 909)가 반복된다.
다른 실시예에서, MCDIMM은 DIMM 규격들과 핀-호환 가능하게 구성될 수 있다. 용어 "DIMM 규격"은 DIMM 인터페이스에 위치한 핀들의 개수를 말한다. 가령, 소정의 DIMM은 168 개의 핀들로 구성되며, 다른 DIMM들은 184 개의 핀들로 구성된다. 메모리 제어기는 도 5 내지 도 8을 참조하여 상술된 모든 상이한 VMD 구성들을 검출 및 활용하도록 구성되며 도 3을 참조하여서 상술된 바와 같은 표준 DIMM을 검출 및 활용하도록 구성될 수 있다. MCDIMM이 기존의 DIMM과 핀-호환 가능하면, 어떠한 새로운 메모리 슬롯 규격도 필요하지 않게 된다. MCDIMM은 MCDIMM을 표준 핀-호환 가능한 DIMM 슬롯 내에 삽입함으로써 기존의 DIMM을 간단하게 대체할 수 있다. 통상적으로, DRAM 칩 및 DIMM 규격은 DRAM 칩 내의 위치를 지정하기 위해서 필요한 바보다 많은 어드레스 비트들을 보유하고 있다. 이러한 추가 비트들의 일부는 MCDIMM 내의 하나 이상의 VMD를 지정하는데 사용될 수 있으며, 이는 DIMM 규격에 의해서 지원되는 최대 DRAM 용량을 희생시킨다. MCDIMM의 VMD의 타입 및 개수를 검출하기 위해서, DRAM 칩들 중 하나의 칩 내에 내장된 모드 레지스터는 이러한 정보를 인코딩하도록 확장될 수 있다. 또한, 메모리 모듈 내의 개별 핀들은 모드 레지스터에서 메모리 제어기로 정보를 전송하는데 전용될 수 있다. 따라서, 소정의 실시예에서, 메모리 제어기는 각 메모리 모듈을 체크하여서 그 메모리 모듈이 DIMM(108 내지 111)와 같은 표준 DIMM인지의 여부를 판정하거나 메모리 모듈이 다수의 상이한 고정된 또는 재구성 가능한 VMD들을 갖는 MCDIMM인지의 여부를 판정한다. 다른 실시예에서, 메모리 제어기는 log2 N 개의 어드레스 비트를 VMD 어드레스 비트로 사용하도록 구성되며, 이로써 어드레스 범위가 전혀 손실되지 않는다.
도 10은 본 발명의 실시예들에 따라서, 도 4에 도시된 다중 코어 DIMM(400)로 도 1에 도시된 표준 DIMM(109)을 대체한 바를 나타내고 있다. 도 10에 도시된 바와 같이, MCDIMM(400)는 DIMM(108 내지 111)과 핀-호환 가능하며, 따라서, DIMM(109)는 제거되고 MCDIMM(400)이 DIMM 슬롯(113) 내에 삽입될 수 있다. 메모리 제어기(104)가 MCDIMM(400)에 대한 모든 상이한 VMD 구성들을 검출 및 활용하도록 구성될 때에, MCDIMM(400)는 VMD의 어드레스 및 개수에 대한 정보를 메모리 제어기(104)에 전송할 수 있다. 이어서, 메모리 제어기(104)는 도 6 내지 도 8을 참조하여서 전술한 바와 같이 MCDIMM(400)을 동작시키기 시작할 수 있다. 그러나, 또한, 메모리 제어기(104)는 도 3을 참조하여서 기술된 바와 같이 오직 DIMM(108,110,111)만을 활용하도록 구성될 수도 있다. 다른 실시예에서, MCDIMM(400)의 사용을 지원하지 않는 메모리 제어기(104)는 표준 DIMM(108 내지 111)과 동일한 방식으로 MCDIMM(400)을 사용할 수 있다.
설명을 위해서, 상술한 발명의 상세한 설명 부분은 특정 전문 용어를 사용하여서 본 발명의 철저한 이해를 도왔다. 그러나, 본 발명을 실시하기 위해서 특정 세부 사항들은 요구되지 않음을 본 기술 분야의 당업자에게는 자명하다. 본 발명의 특정 실시예들에 대하여 전술한 부분들은 본 발명을 예시적으로 설명하기 위해서 제공되었다. 따라서, 이들은 그 개시된 형태로 본 발명을 한정하지 않는다. 자명하게는, 다수의 수정 및 변경이 위의 교시 사항들의 조명 하에서 가능하다. 본 발명의 원리 및 그의 실용적 애플리케이션을 최상으로 설명하여서 본 기술 분야의 당업자로 하여금 본 발명 및 다양한 실시예들을 고려될 수 있는 특정 사용에 적합한 다양한 수정 사항과 함께 최상으로 활용할 수 있도록 여러 실시예들이 제공되었다. 본 발명의 범위는 다음의 청구 범위 및 이의 균등 범위에 의해서 규정된다.

Claims (14)

  1. 메모리 칩들과,
    상기 메모리 칩들 각각 및 메모리 제어기에 전자적으로 접속된 디멀티플렉서 레지스터(502)를 포함하며,
    상기 메모리 제어기는 상기 메모리 칩들 중 하나 이상을 가변하는 성능 요구 사항 및/또는 에너지 효율 요구 사항에 따라서 적어도 하나의 가상 메모리 디바이스로 그룹화시키며,
    상기 디멀티플렉서 레지스터는 상기 가상 메모리 디바이스들 중 하나를 식별하는 명령을 수신하여서 상기 명령을 상기 식별된 가상 메모리 디바이스의 메모리 칩들에 전송하는
    메모리 모듈(500).
  2. 제 1 항에 있어서,
    상기 메모리 제어기는 운영 체제, 애플리케이션 또는 컴퓨터 시스템 운영자에 의해서 제공된 인스트럭션에 따라서 상기 하나 이상의 메모리 칩들을 상기 적어도 하나의 가상 메모리 디바이스로 그룹화시키는
    메모리 모듈.
  3. 제 1 항에 있어서,
    상기 메모리 칩은 DRAM(dynamic random access memory) 칩(401 내지 408)을 더 포함하는
    메모리 모듈.
  4. 제 1 항에 있어서,
    각 명령이 상기 디멀티플렉서 레지스터에 도달하고 고정된 지속 타임 인터벌(521-524) 동안 상기 명령 내에서 식별된 가상 메모리 디바이스로 전송되도록 상기 명령들은 상기 메모리 제어기에서 상기 디멀티플렉서 레지스터에 시분할 멀티플렉싱 방식으로 전송되는
    메모리 모듈.
  5. 제 1 항에 있어서,
    상기 메모리 제어기는 가변하는 성능 요구 사항 및/또는 에너지 효율 요구 사항에 따라서 하나 이상의 상기 메모리 칩들을 적어도 하나의 가상 메모리 디바이스로 그룹화시키며,
    상기 메모리 제어기는 상기 메모리 제어기로부터 상기 디멀티플렉서 레지스터에 전송되는 구성 명령(a configuration command)을 생성하는
    메모리 모듈.
  6. 제 5 항에 있어서,
    상기 구성 명령은 상기 디멀티플렉서 레지스터로 하여금 상기 메모리 모듈의 하나 이상의 상이한 메모리 칩들로 상기 적어도 하나의 가상 메모리 디바이스를 재구성하도록 지시하는 인스트럭션을 더 포함하는
    메모리 모듈.
  7. 제 1 항에 있어서,
    상기 디멀티플렉서 레지스터는,
    각각이 상기 메모리 칩들 중 하나에 전자적으로 접속된 적어도 하나의 명령 선택기와,
    상기 명령을 상기 적어도 하나의 명령 선택기에 브로드캐스트하도록 구성되는 브로드캐스트 버스(532)를 더 포함하며,
    상기 각 명령 선택기는 상기 명령 내에 내장된 메모리 어드레스가 상기 접속된 메모리 칩의 어드레스와 일치하면 상기 명령 내에 내장된 메모리 어드레스를 추출하고 상기 명령을 상기 접속된 메모리 칩으로 전송하고, 만일 상기 명령 내에 내장된 메모리 어드레스가 상기 접속된 메모리 칩의 어드레스와 일치하지 않으면 상기 명령 선택기는 상기 명령을 폐기하는
    메모리 모듈.
  8. 제 7 항에 있어서,
    상기 명령 선택기는,
    상기 명령 내에 내장된 메모리 어드레스가 상기 접속된 메모리 칩의 어드레스와 일치하면 상기 명령으로부터 상기 메모리 칩 어드레스를 추출하여서 선택 신호를 생성하도록 구성되는 AND 게이트(544)와,
    상기 AND 게이트가 상기 선택 신호를 제공하면 상기 명령을 수신하여서 상기 접속된 메모리 칩으로 전송하고 상기 AND 게이트가 상기 선택 신호를 제공하지 않으면 상기 명령을 폐기하도록 구성되는 레지스터/카운터(546)와,
    캐시 라인을 보다 작은 캐시 라인 세그먼트들로 분할하고 상기 명령을 상기 캐시 라인 세그먼트들에 대응하게 변환시키는 동작들을 제어하는 RAM 타이밍 제어부(548)를 더 포함하는
    메모리 모듈.
  9. 제 1 항에 있어서,
    상기 메모리 칩들 각각에 전자적으로 접속된 상기 디멀티플렉서 레지스터(502)는 상기 디멀티플렉서 레지스터와 상기 메모리 칩들 간에 배치된 명령 버스를 더 포함하고,
    상기 명령 버스는 상기 메모리 칩들 각각을 상기 디멀티플렉서 레지스터(502)에 접속시키는 별도의 신호 라인 세트들(504 내지 511)을 포함하는
    메모리 모듈.
  10. 제 1 항에 있어서,
    상기 메모리 모듈은 DIMM 규격과 핀-호환 가능하게 구성되는
    메모리 모듈.
  11. 메모리 모듈을 제어하는 방법으로서,
    제 1 항에 따라 구성된 메모리 모듈을 제공하는 단계와,
    적어도 하나의 메모리 칩을 포함하는 적어도 하나의 가상 메모리 디바이스를 구성하는 단계(901)와,
    상기 적어도 하나의 가상 메모리 디바이스의 상기 메모리 칩들을 식별하는 명령을 상기 메모리 제어기로부터 상기 메모리 모듈의 디멀티플렉서 레지스터에 전송하는 단계(904)와,
    상기 명령을 상기 디멀티플렉서 레지스터로부터 상기 명령 내에서 식별된 상기 적어도 하나의 가상 메모리 디바이스의 적어도 하나의 메모리 칩으로 전송하는 단계(906)와,
    시스템 성능 요구 사항 및/또는 에너지 효율 요구 사항에 있어서의 변경 사항에 기초하여서 상기 적어도 하나의 가상 메모리 디바이스를 재구성하는 단계(908)를 포함하는
    메모리 모듈 제어 방법.
  12. 제 11 항에 있어서,
    상기 적어도 하나의 가상 메모리 디바이스의 어드레스를 포함하는 명령을 메모리 제어기에서 준비하는 단계(903)를 더 포함하는
    메모리 모듈 제어 방법.
  13. 제 11 항에 있어서,
    상기 구성 단계는,
    애플리케이션의 실행 동안에 가상 메모리 디바이스당 필요한 메모리 칩들의 개수를 판정하는 단계와,
    부트-업 타임(boot-up time) 동안에 가상 메모리 디바이스당 필요한 메모리 칩들의 개수를 판정하는 단계와,
    컴퓨터 시스템 운영자가 가상 메모리 디바이스당 필요한 메모리 칩들의 개수를 판정하는 단계 중 하나의 단계를 더 포함하는
    메모리 모듈 제어 방법.
  14. 제 11 항에 있어서,
    상기 재구성 단계는,
    상기 적어도 하나의 가상 메모리 디바이스를 재구성하기 이전에 상기 적어도 하나의 가상 메모리 디바이스에 이미 저장된 데이터를 임시 저장하고 이어서 상기 데이터를 상기 적어도 하나의 재구성된 가상 메모리 디바이스에 저장하는 단계를 더 포함하는
    메모리 모듈 제어 방법.
KR1020117005365A 2008-08-08 2008-08-08 메모리 모듈 및 메모리 모듈 제어 방법 KR101477849B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2008/009522 WO2010016817A1 (en) 2008-08-08 2008-08-08 Independently controllable and reconfigurable virtual memory devices in memory modules that are pin-compatible with standard memory modules

Publications (2)

Publication Number Publication Date
KR20110059711A true KR20110059711A (ko) 2011-06-03
KR101477849B1 KR101477849B1 (ko) 2014-12-30

Family

ID=41663889

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117005365A KR101477849B1 (ko) 2008-08-08 2008-08-08 메모리 모듈 및 메모리 모듈 제어 방법

Country Status (6)

Country Link
US (1) US8924639B2 (ko)
EP (1) EP2313890B1 (ko)
JP (1) JP5289569B2 (ko)
KR (1) KR101477849B1 (ko)
CN (1) CN102177551B (ko)
WO (1) WO2010016817A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5400886B2 (ja) * 2008-08-13 2014-01-29 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. マルチコアメモリモジュール内のパワーダウンモードの動的利用
US8472199B2 (en) * 2008-11-13 2013-06-25 Mosaid Technologies Incorporated System including a plurality of encapsulated semiconductor chips
US8023345B2 (en) * 2009-02-24 2011-09-20 International Business Machines Corporation Iteratively writing contents to memory locations using a statistical model
US8626997B2 (en) * 2009-07-16 2014-01-07 Micron Technology, Inc. Phase change memory in a dual inline memory module
US8386739B2 (en) * 2009-09-28 2013-02-26 International Business Machines Corporation Writing to memory using shared address buses
US8230276B2 (en) * 2009-09-28 2012-07-24 International Business Machines Corporation Writing to memory using adaptive write techniques
US8463985B2 (en) 2010-03-31 2013-06-11 International Business Machines Corporation Constrained coding to reduce floating gate coupling in non-volatile memories
WO2013068862A1 (en) * 2011-11-11 2013-05-16 International Business Machines Corporation Memory module and memory controller for controlling a memory module
CN102521142B (zh) * 2011-12-13 2015-05-13 曙光信息产业(北京)有限公司 一种提高大容量、多内存设备访问效率的方法
JP5992713B2 (ja) 2012-03-30 2016-09-14 株式会社ソニー・インタラクティブエンタテインメント メモリシステム、その制御方法及び情報処理装置
US20150169445A1 (en) 2013-12-12 2015-06-18 International Business Machines Corporation Virtual grouping of memory
WO2016082182A1 (zh) * 2014-11-28 2016-06-02 华为技术有限公司 具有光接口的内存系统的配置方法及内存系统
US10592114B2 (en) 2016-03-03 2020-03-17 Samsung Electronics Co., Ltd. Coordinated in-module RAS features for synchronous DDR compatible memory
US10621119B2 (en) * 2016-03-03 2020-04-14 Samsung Electronics Co., Ltd. Asynchronous communication protocol compatible with synchronous DDR protocol
US10037150B2 (en) * 2016-07-15 2018-07-31 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
EP3333852B1 (en) * 2016-12-06 2019-04-24 Axis AB Memory arrangement
US20190188165A1 (en) 2019-02-22 2019-06-20 Intel Corporation Extended mode (xm) bus mode change, configuration register accesses and broadcast / multi-cast transactions to devices on a xm bus
CN113360323A (zh) * 2021-07-02 2021-09-07 西安紫光国芯半导体有限公司 一种众核计算电路、堆叠芯片和容错控制方法
JP7458100B1 (ja) 2023-01-30 2024-03-29 株式会社ジョンクェルコンサルティング 二酸化炭素の処理装置、および二酸化炭素の処理方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5960786A (ja) * 1982-09-30 1984-04-06 Fujitsu Ltd 半導体集積回路
US5960468A (en) * 1997-04-30 1999-09-28 Sony Corporation Asynchronous memory interface for a video processor with a 2N sized buffer and N+1 bit wide gray coded counters
US6091620A (en) * 1999-07-06 2000-07-18 Virage Logic Corporation Multi-bank memory with word-line banking, bit-line banking and I/O multiplexing utilizing tilable interconnects
US7356639B2 (en) 2000-01-05 2008-04-08 Rambus Inc. Configurable width buffered module having a bypass circuit
US6675272B2 (en) * 2001-04-24 2004-01-06 Rambus Inc. Method and apparatus for coordinating memory operations among diversely-located memory components
ITMI20011150A1 (it) * 2001-05-30 2002-11-30 St Microelectronics Srl Multiplatore di colonna per memorie a semiconduttore
JP4098496B2 (ja) * 2001-06-22 2008-06-11 株式会社ルネサステクノロジ 半導体記憶装置
US6904490B2 (en) * 2002-10-10 2005-06-07 International Business Machines Corporation Method and system of managing virtualized physical memory in a multi-processor system
US7721679B2 (en) 2003-10-14 2010-05-25 Goodfield Energy Corporation Vapor generator with preheater and method of operating same
JP2006236105A (ja) * 2005-02-25 2006-09-07 Canon Inc アクセス制御装置及びその制御方法
US7590796B2 (en) * 2006-07-31 2009-09-15 Metaram, Inc. System and method for power management in memory systems
US7464225B2 (en) * 2005-09-26 2008-12-09 Rambus Inc. Memory module including a plurality of integrated circuit memory devices and a plurality of buffer devices in a matrix topology
WO2007095080A2 (en) * 2006-02-09 2007-08-23 Metaram, Inc. Memory circuit system and method
JP5292935B2 (ja) * 2008-06-16 2013-09-18 日本電気株式会社 メモリモジュール制御方法及びメモリモジュール並びにデータ転送装置

Also Published As

Publication number Publication date
WO2010016817A1 (en) 2010-02-11
US8924639B2 (en) 2014-12-30
EP2313890A1 (en) 2011-04-27
KR101477849B1 (ko) 2014-12-30
EP2313890B1 (en) 2016-05-04
JP5289569B2 (ja) 2013-09-11
US20110145504A1 (en) 2011-06-16
JP2011530734A (ja) 2011-12-22
EP2313890A4 (en) 2011-08-31
CN102177551A (zh) 2011-09-07
CN102177551B (zh) 2015-05-20

Similar Documents

Publication Publication Date Title
KR101477849B1 (ko) 메모리 모듈 및 메모리 모듈 제어 방법
KR101467623B1 (ko) 메모리 모듈 및 메모리 모듈 제어 방법
US10037818B2 (en) Switched interface stacked-die memory architecture
KR101474597B1 (ko) 가상 메모리 디바이스에 대한 동작 모드 결정 방법 및 시스템
KR101865331B1 (ko) 메모리 프리페치 시스템들 및 방법들
US11029746B2 (en) Dynamic power management network for memory devices
JP5162024B2 (ja) マルチポート型メモリスーパーセル及びデータ経路スイッチング回路を伴う集積回路
CN111916120B (zh) 带宽提升的堆叠存储器
US6826657B1 (en) Techniques for increasing bandwidth in port-per-module memory systems having mismatched memory modules
JPH11203252A (ja) 並列プロセッサおよびメモリ制御方法

Legal Events

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

Payment date: 20171211

Year of fee payment: 4