KR20140013010A - 메모리 셀들을 액세스하는 방법들, 메모리 요청들을 분배하는 방법, 시스템들, 및 메모리 제어기들 - Google Patents

메모리 셀들을 액세스하는 방법들, 메모리 요청들을 분배하는 방법, 시스템들, 및 메모리 제어기들 Download PDF

Info

Publication number
KR20140013010A
KR20140013010A KR1020137025982A KR20137025982A KR20140013010A KR 20140013010 A KR20140013010 A KR 20140013010A KR 1020137025982 A KR1020137025982 A KR 1020137025982A KR 20137025982 A KR20137025982 A KR 20137025982A KR 20140013010 A KR20140013010 A KR 20140013010A
Authority
KR
South Korea
Prior art keywords
memory
address
region
memory cells
request
Prior art date
Application number
KR1020137025982A
Other languages
English (en)
Other versions
KR101993651B1 (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 KR20140013010A publication Critical patent/KR20140013010A/ko
Application granted granted Critical
Publication of KR101993651B1 publication Critical patent/KR101993651B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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

Abstract

메모리 셀들을 액세스하는 방법들, 메모리 요청들을 분배하는 방법들, 시스템들, 및 메모리 제어기들이 설명된다. 하나의 이러한 방법에서, 메모리 셀들은 적어도 메모리 셀들의 제 1 영역 및 메모리 셀들의 제 2 영역으로 나뉘며, 제 1 영역에서의 메모리 셀들은 제 1 어드레스 정의에 따라 액세스되며 제 2 영역에서의 메모리 셀들은 제 1 어드레스 정의와 상이한 제 2 어드레스 정의에 따라 액세스된다. 부가적인 실시예들이 설명된다.

Description

메모리 셀들을 액세스하는 방법들, 메모리 요청들을 분배하는 방법, 시스템들, 및 메모리 제어기들{METHODS OF ACCESSING MEMORY CELLS, METHODS OF DISTRIBUTING MEMORY REQUESTS, SYSTEMS, AND MEMORY CONTROLLERS}
우선권 출원
본 특허 출원은 여기에 전체적으로 참조로서 통합되는, 2011년 3월 7일에 출원된, 미국 출원 번호 제13/042,164호로부터 우선권 이득을 주장한다.
메모리 시스템들은 개인용 디지털 보조기들(PDA들), 랩탑 컴퓨터들, 이동 전화기들 및 디지털 카메라들과 같은 많은 디바이스들에서 사용된다. 이들 메모리 시스템들의 일부는 단일 버스로부터 메모리 요청들을 수신하는 다수의 메모리 디바이스들을 포함한다.
몇몇 실시예들은 첨부한 도면들의 도면들에서 제한이 아닌 예로서 예시된다.
도 1은 본 발명의 다양한 실시예들에 따른 시스템의 블록도이다.
도 2는 본 발명의 다양한 실시예들에 따른 시스템의 블록도이다.
도 3은 본 발명의 다양한 실시예들에 따른 메모리 시스템의 블록도이다.
도 4는 본 발명의 다양한 실시예들에 따른 메모리 셀의 어드레스의 블록도이다.
도 5는 본 발명의 다양한 실시예들에 따른 프로그램가능한 레지스터의 블록도이다.
도 6은 본 발명의 다양한 실시예들에 따른 메모리 셀의 어드레스의 블록도이다.
도 7은 본 발명의 다양한 실시예들에 따른 메모리 셀의 어드레스의 블록도이다.
도 8은 본 발명의 다양한 실시예들에 따라 메모리 시스템에 의해 수신된 데이터를 예시한 개략도이다.
도 9는 본 발명의 다양한 실시예들에 따라 메모리 시스템에 의해 수신된 데이터를 예시한 개략도이다.
도 10은 본 발명의 다양한 실시예들에 따른 시스템의 블록도이다.
도 11은 본 발명의 다양한 실시예들에 따른 일 방법의 흐름도이다.
도 12는 본 발명의 다양한 실시예들에 따른 일 방법의 흐름도이다.
도 13은 본 발명의 다양한 실시예들에 따른 메모리 셀의 어드레스의 블록도이다.
다중-채널 메모리 시스템들은 다른 시스템들과 비교할 때 보다 큰 대역폭 및 감소된 전력 사용을 가진다. 몇몇 시스템들에서, 각각의 채널은 하나의 마스터 또는 마스터들의 그룹을 서비스한다. 이러한 할당은 서비스 제어의 보다 엄격한 품질을 허용하지만, 메모리 시스템으로부터 이용가능한 대역폭을 감소시킬 수 있다. 마스터들이 휴면 상태일 때, 핀들 및 연관된 채널들의 대역폭은 유휴 상태(idle)이며 시스템의 나머지에 의해 사용될 수 없다. 마스터 또는 마스터들의 그룹에 할당된 각각의 채널을 위한 메모리의 밀도가 또한 제한될 수 있다. 예를 들면, 마스터가 단지 128 킬로바이트들(KB)의 메모리를 필요로 하며, 가장 작은 이용가능한 채널이 1 기가바이트(1GB)의 메모리를 제공한다면, 전체 채널이 마스터에 할당되기 때문에 채널의 많은 부분이 이용가능하지 않을 것이다.
본 발명자는 언급된 도전들, 뿐만 아니라 다른 것들이, 각각의 영역이 예를 들면 그 자신의 채널 정의(definition)를 갖는 메모리 셀들의 다수의 영역들을 갖고 메모리 시스템을 동작시킴으로써 처리될 수 있다는 것을 발견하였다. 영역적(regional) 채널 정의들은 메모리 시스템의 전력 사용 및 성능이 구성될(예로서, 조정될) 수 있게 한다.
다음의 설명에서, 개개의 숫자들(예로서, 이후 "비트들"로서 언급되는, 이진 숫자(digit)들)은 괄호들 안에 표현된다. 단일 비트는 비트([G])로서 표현되며, 여기에서 G는 0부터 증가하는 음이 아닌 정수이다. 연속되는 비트들의 그룹은 비트들([J:K])로서 표현되며, 여기에서 J 및 K는 음이 아닌 정수들이다. [J:K]에서의 연속된 비트들은 K로 시작하여 J로 끝난다. 바이트는 8 비트들을 가지며, B[P]에 의해 표현되고, 여기에서 P는 바이트를 식별하는 음이 아닌 정수이다.
도 1은 본 발명의 다양한 실시예들에 따른 시스템(100)의 블록도이다. 시스템(100)은 제 1 버스(130)를 통해 브리지 회로(120)에 결합된 제 1 프로세서(110)를 포함한다. 제 2 프로세서(134)가 또한 제 1 버스(130)를 통해 브리지 회로(120)에 결합된다. 브리지 회로(120)는 제 2 버스(150)를 통해 메모리 시스템(140)에 결합된다. 브리지 회로(120)는 메모리 제어기(160)를 이용해 프로세서들(110, 134)로부터의 메모리 요청들을 실행하며, 제 1 및 제 2 버스들(130, 150)을 통해 프로세서들(110, 134) 및 메모리 시스템(140) 사이에서 데이터를 전달한다. 메모리 시스템(140)에서의 메모리 셀들은 메모리 제어기(160) 내의 메모리 맵(170)에 따라 위치된다. 메모리 시스템(140)에서의 메모리 셀들은 제 1 영역(182) 및 제 2 영역(184)과 같이 다수의 영역들로 나뉠 수 있다(예로서, 분할될 수 있다). 메모리 시스템(140)은, 예를 들면, 하나 이상의 동적 랜덤 액세스 메모리(DRAM) 디바이스들, 동기식 동적 랜덤 액세스 메모리(SDRAM) 디바이스들 및 플래시 메모리 디바이스들을 포함할 수 있다. 프로세서들(110, 134)은 마스터들로서 불리울 수 있으며, 시스템(100)에 둘 이상의 마스터들이 존재할 수 있다.
도 2는 본 발명의 다양한 실시예들에 따른 시스템(200)의 블록도이다. 시스템(200)은 버스(250)를 통해 메모리 시스템(240)에 결합된, 시스템-온-칩(system-on-chip; SOC)(210)에 포함된 것과 같은, 제 1 프로세서를 포함한다. SOC(256)에 포함된 것과 같은, 제 2 프로세서 또한 버스(250)를 통해 메모리 시스템(240)에 결합된다. SOC들(210, 256) 각각은 하나의 프로세서 및 시스템으로서 함께 동작하는 단일 집적 회로 상에서의 적어도 하나의 다른 집적 회로를 포함한다. SOC들(210, 256)은 마스터들로서 지칭될 수 있으며, 시스템(200)에 둘 이상의 마스터들이 존재할 수 있다. SOC(210)는 버스(250)를 통해 메모리 시스템(240)으로 및 그로부터 데이터를 전달하는 메모리 제어기(260)를 이용해 메모리 요청들을 실행한다. 메모리 시스템(240)에서의 메모리 셀들은 메모리 제어기(260) 내의 메모리 맵(270)에 따라 위치된다. SOC(256)는 또한 메모리 시스템(240)에 대한 메모리 요청들을 실행하기 위해 메모리 제어기(280) 및 메모리 맵(282)을 포함한다. 메모리 시스템(240)에서의 메모리 셀들은 제 1 영역(282) 및 제 2 영역(284)과 같은 다수의 영역들로 나뉠 수 있다. 메모리 시스템(240)은, 예를 들면, 하나 이상의 DRAM 디바이스들, SDRAM 디바이스들 및 플래시 메모리 디바이스들을 포함할 수 있다.
도 1 및 도 2에 도시된 각각의 메모리 시스템(140, 240)은 버스(150) 또는 버스(250)와 같은 단일 버스에 결합된 다수의 핀들을 통해 데이터(예로서, 정보)를 교환하도록 배열된 단일 메모리 디바이스 또는 다수의 메모리 디바이스들일 수 있다. 도 3은 본 발명의 다양한 실시예들에 따른 메모리 시스템(300)의 블록도이다. 메모리 시스템(300)은 병렬로 배열된 8개의 메모리 디바이스들(310, 312, 314, 316, 318, 320, 322 및 324)을 포함한다. 메모리 디바이스들(310, 312, 314, 316, 318, 320, 322 및 324)의 각각은 버스를 통해 데이터를 전달하기 위해 8개의 데이터 핀들(340)을 통해 시스템에서 동일한 버스(도시되지 않음)에 결합된다. 메모리 디바이스들(310, 312, 314, 316, 318, 320, 322 및 324)은 예를 들면, DRAM 디바이스들, SDRAM 디바이스들, 플래시 메모리 디바이스들 또는 그것들의 임의의 조합일 수 있으며, 도 3에 도시된 병렬 배열 이외의 다른 배치로 위치될 수 있다. 메모리 디바이스들(310, 312, 314, 316, 318, 320, 322 및 324)의 각각에서 8개 보다 많거나 또는 적은 데이터 핀들이 존재할 수 있다.
메모리 맵들(170, 270)(도 1 및 도 2 참조)과 같은 메모리 맵은 메모리 시스템(300)에서의 메모리 셀들이 서로에 대하여 어떻게 배향(orient)되는지를 표시하는 데이터의 구조일 수 있다. 마스터로부터 수신된 메모리 어드레스는 메모리 시스템(300)에서의 물리적 메모리 셀들의 위치에 대응(예로서, 표시 또는 표현)하거나 또는 대응하지 않을 수 있는 숫자들의 컬렉션이다. 메모리 맵은 메모리 시스템(300)에서의 하나 이상의 물리적 메모리 셀들과 마스터로부터의 어드레스를 매칭시키기 위한 데이터를 포함한다.
메모리 셀은 어드레스들의 상이한 클래스들에 따라 판독 및 쓰기 동작들을 위해 액세스되며, 어드레스의 각각의 클래스는 정의를 가진다. 제 1 클래스의 어드레스들은 함께, 다수의 로우(row)들 및 컬럼(column)들을 가진 메모리 셀들의 어레이에서의 로우 및 컬럼의 교차점에서 하나의 메모리 셀에 대응하는 로우 어드레스 및 컬럼 어드레스를 포함한다. 메모리 셀들은 다중-채널 메모리 시스템에서 채널들로 나뉜다. 채널 어드레스는 다중-채널 메모리 시스템에서의 하나의 채널에서 다수의 메모리 셀들을 식별하는 제 2 클래스의 어드레스이다. 뱅크 어드레스(bank address)는 메모리 셀들의 다수의 채널들의 뱅크를 식별하는 제 3 클래스의 어드레스이다. 시스템은 메모리 셀들의 둘 이상의 뱅크들을 가질 수 있다. 논의된 메모리 맵은 또한 도 1 및 도 2에 도시된 영역들(182, 184, 282 및 284)과 같은 영역들로의 메모리 시스템에서의 메모리 셀들의 분할을 가능하게 한다. 영역 어드레스는 여기에서 이하에 설명될 바와 같이 다중-채널 메모리 시스템에서의 메모리 셀들의 영역을 식별하는 제 4 클래스의 어드레스이다.
도 4는 본 발명의 다양한 실시예들에 따른 메모리 셀의 어드레스(400)의 블록도이다. 어드레스(400)는 각각의 비트가 "0" 또는 "1"의 값을 가지며, 비트들의 조합이 메모리 셀이 발견되는 곳을 표시하기 위해 사용되는, 32 비트들([31:0])로 구성된다. 어드레스(400)의 비트들은 좌측에서 우측으로 연속하여 배열된다. 어드레스(400)는 우측을 향해 보다 낮은 자릿수 비트들을 가지며, 최저 자릿수 비트(lowest order bit)([0])는 최하위 비트(least significant bit; LSB)(410)로 불리운다. 어드레스(400)는 좌측을 향해 보다 높은 자릿수 비트들을 가지며, 최고 자릿수 비트(highest order bit)([31])는 최상위 비트(most significant bit; MSB)(420)로 불리운다. 어드레스(400)에서의 보다 낮은 자릿수 비트는 LSB(410)에 더 가까우며 보다 높은 자릿수 비트는 MSB(420)에 더 가깝다. 어드레스(400)는 MSB(420)를 포함한 최고 자릿수 비트들인 로우 비트들(430)([31:16])을 포함한다. 어드레스(400)에서의 다음은 뱅크 비트들(440)([15:13]), 컬럼 비트들(450)([12:3]), 및 채널 비트들(460)([2:0])이다. 채널 비트들(460)은 LSB(410)를 포함한 최저 자릿수 비트들이다. 어드레스(400)는 30, 40, 42, 또는 본 발명의 다양한 실시예들에 따른 32 비트들 이외의 다른 임의의 수의 비트들을 포함할 수 있다. 역순을 포함하여, 도시된 것과 상이한 자릿수들의 비트들이 또한 사용될 수 있다. 어드레스(400)에서 로우 비트들(430), 뱅크 비트들(440), 컬럼 비트들(450), 및 채널 비트들(460)의 수 및 위치는 어드레스(400)의 정의이다. 정의는 이들 비트들의 수 또는 위치를 변경함으로써 변경될 수 있다. 어드레스(400)의 정의는 데이터가 메모리 시스템에 어떻게 및 어디에 저장되는지에 영향을 준다. 각각의 영역은 상이한 어드레스 정의를 가질 수 있다.
메모리 시스템(300)의 메모리 디바이스들(310, 312, 314, 316, 318, 320, 322 및 324)은 다중-채널 시스템으로서 동작할 수 있으며, 채널들은 각각의 영역에 대해 고유하게 정의될 수 있다. 영역적 채널 정의들로서 불리우는, 이러한 정의들은 데이터 핀들(340)의 모두가 영역마다 또는 단지 데이터 핀들(340)의 작은 서브세트(subset)마다 사용되도록 허용한다. 영역적 채널 정의들은 메모리 시스템에서의 상이한 영역들이 영역에 저장될 데이터의 유형에 기초하여 구성되도록(예로서, 맞춰지도록) 할 수 있다. 예를 들면, 그래픽들을 위해 사용되는 메모리 시스템의 영역은, 얕은(shallow) 채널들을 가진 영역과 비교할 때, 각각의 메모리 요청에 대한 감소된 수의 활성화들을 이용해 전력을 절감할 깊은(deep) 채널 정의를 가질 수 있다. 깊은 채널은 얕은 채널보다 다음 채널로 이동하기 전에 액세스 당 보다 많은 데이터를 액세스할 것이다. 활성화들의 수는 메모리 요청의 실행 동안 액세스되는 메모리 셀들의 로우들의 수이다. 그래픽 마스터들은 지연 시간(latency)에 상대적으로 덜 민감할 수 있으며, 실행하기 위한 메모리 요청에 대한 추가의 몇 나노초들이 성능에 대체로 영향을 미치지 않을 것이다.
영역적 채널 정의들은 어드레스(400)에서의 채널 비트들(460)에 의해 본 발명의 다양한 실시예들에 따라 구현된다. 채널 비트들(460)은 어드레스(400)에서의 어딘가에 위치될 수 있으며, 서로와 인접하거나 또는 인접하지 않을 수 있다.
영역들은 본 발명의 다양한 실시예들에 따라 적어도 두 개의 방식들로 구현될 수 있다. 예를 들면, 영역 어드레스의 비트들은 도 1 및 도 2에 도시된 영역들(182, 184, 282 및 284)과 같은 메모리 셀들의 영역을 표시하기 위해 어드레스(400)에 부가될 수 있다. 영역들은 또한 다수의 프로그램가능한 레지스터들에 의해 정의될 수 있다.
도 5는 본 발명의 다양한 실시예들에 따른 프로그램가능한 레지스터(500)의 블록도이다. 마스터로부터의 메모리 요청과 연관된(예로서, 메모리 요청 내의) 어드레스("메모리 요청 어드레스")는 메모리의 어떤 영역이 어드레스에 대응하는 메모리 셀을 갖는지를 결정하기 위해 프로그램가능한 레지스터(500) 내의 값과 비교될 수 있다. 프로그램가능한 레지스터(500)는 영역을 정의하기 위해 16개의 비트들을 포함하지만, 보다 많거나 또는 보다 적은 비트들이 사용될 수 있다. 메모리의 각각의 영역은 그 자신의 프로그램가능한 레지스터에 의해 정의된다. 영역들은 중첩하지 않는다. 프로그램가능한 레지스터(500)는 시스템의 수명 동안 영역들의 정의를 변경하도록 재프로그래밍될 수 있다.
다중-채널 메모리 시스템에서의 각각의 영역은 상이한 채널 깊이를 가질 수 있다. 채널의 깊이는 어드레스가 또 다른 채널로 이동(예로서, 롤링(roll)하거나, 증분하거나, 또는 횡단하는)하기 전에 채널로부터 액세스될 바이트들의 수로서 정의될 수 있다. 채널의 깊이는 메모리 디바이스의 프리페치(prefetch), 및 어드레스(400)에서의 채널 비트들(460)의 위치에 의해 결정될 수 있다. 프리페치는 그것이 한 번에 1 이상의 비트를 수신한다면 다중-채널 메모리 시스템에서 수신될 수 있는 가장 작은 수의 비트들이다. 프리페치는 메모리 디바이스에 의해 결정된다. 채널 비트들(460)이 어드레스(400)의 최저 자릿수 비트들에 있다면, 채널은 얕으며, 단일 메모리 요청은 다수의 채널들을 스패닝(span)할 가능성이 더 높다. 채널 비트들(460)이 어드레스(400)에서의 보다 높은 자릿수 비트들까지 이동함에 따라, 채널은 더 깊어진다. 보다 많은 바이트들이 다음 채널로 건너기 전에 보다 깊은 채널로부터 액세스될 수 있다. 예를 들면, 도 4에 도시된 어드레스(400)에 대하여, 3개의 채널 비트들(460)([2:0])은 최저 자릿수 비트들이며 얕은 채널(shallow channel)인 8 바이트 채널을 정의한다. 도 6은 본 발명의 다양한 실시예들에 따른 메모리 셀의 어드레스(600)의 블록도이다. 어드레스(600)는 LSB(610)([0]) 및 MSB(620)([31]) 사이에서의 32 비트들([31:0])로 구성된다. 어드레스(600)는 최고 자릿수 비트들인 로우 비트들(630)([31:16]) 및 그 후 뱅크 비트들(640) ([15:13])을 포함한다. 10개의 컬럼 비트들(650)은 2개의 그룹들([12:9] 및 [5:0])로 분할되며, 3개의 채널 비트들(660)([8:6])은 컬럼 비트들(650)([12:9] 및 [5:0]) 사이에 위치된다. 그러므로 컬럼 비트들(650)은 인접하지 않는다. 도 4에 도시된 어드레스(400)와 비교할 때, 채널 비트들(660)은 어드레스(400)에서의 채널 비트들(460)보다 어드레스(600)에서 자릿수가 더 높다. 어드레스(600)는 어드레스(400)에 의해 정의된 8 바이트 채널보다 더 깊은 256 바이트 채널을 정의한다.
도 7은 본 발명의 다양한 실시예들에 따른 메모리 셀의 어드레스(700)의 블록도이다. 어드레스(700)는 LSB(710)([0]) 및 MSB(720)([31]) 사이에서 32 비트들([31:0])로 구성된다. 어드레스(700)에서의 최고 자릿수 비트들은 3개의 채널 비트들(760)([31:29])이다. 채널 비트들(760)에 이어, 어드레스(700)는 로우 비트들(770)([28:13]), 뱅크 비트들(780)([12:10]) 및 컬럼 비트들(790)([9:0])을 순서대로 포함한다. 채널 비트들(760)이 뱅크 비트들(780)보다 더 높기 때문에, 채널 비트들(760)은 메모리 셀들의 뱅크보다 더 깊은 채널을 정의한다. 어드레스(700)는 분할된 메모리 시스템을 표현한다.
어드레스들(400, 600 및 700) 각각은 로우 어드레스, 뱅크 어드레스, 컬럼 어드레스, 및 채널 어드레스를 포함하는 어드레스의 다수의 클래스들을 가진다. 로우 어드레스, 뱅크 어드레스, 및 컬럼 어드레스는 모든 3개의 어드레스들(400, 600 및 700)에서 서로에 대하여 동일한 정의를 가진다. 채널 어드레스의 정의는 어드레스들(400, 600 및 700)의 각각에서 어드레스의 다른 클래스들에 대하여 상이하다. 채널 어드레스의 상이한 정의들은 어드레스들(400, 600, 700)의 각각에 대한 채널의 상이한 깊이를 야기한다.
채널의 깊이를 변경하는 것은 어드레스가 다음 채널로 증분하기 전에 메모리 제어기가 단일 채널 내에서 보다 많거나 또는 보다 적은 바이트들을 액세스할 것임을 의미한다. 이것은 도 8 및 도 9에 예시된 것과 같이 데이터가 어떻게 메모리 시스템에 저장되는지에 영향을 준다.
도 8은 본 발명의 다양한 실시예들에 따라 메모리 시스템(300)에 의해 수신된 데이터를 예시한 개략도이다. 메모리 시스템(300)은 각각의 어드레스의 최저 자릿수 비트들([n:0])에서의 채널 비트들을 갖는 8 바이트들의 깊이를 가진 얕은 채널들로 어드레싱된 64 바이트들(B[0] 내지 B[63])을 수신하는 것에 대해 여기에서 도시된다. 도 4의 어드레스(400)는 어드레스(400)의 3개의 채널 비트들(460)([2:0])이 8 바이트 채널을 정의하는 얕은 채널의 일 예이다. 메모리 디바이스들(310, 312, 314, 316, 318, 320, 322 및 324)의 각각은 8 바이트들의 프리-페치를 가지며 메모리 요청의 실행 동안 단일 채널을 위한 바이트들을 수신한다. 채널 어드레스는 8 바이트들마다 증분하며 다음 메모리 디바이스에서의 다음 채널은 요청된 각각의 부가적인 8 바이트들에 대해 액세스될 것이다. 그 결과는 8 바이트들(B[0] 내지 B[7])이 메모리 디바이스(310)에 기록되며, 8 바이트들(B[8] 내지 B[15])이 메모리 디바이스(312)에 기록되는 등이다. 따라서, 8 바이트들은 또한 나머지 메모리 디바이스들(314, 316, 318, 320, 322 및 324)의 각각에 기록된다. 이들 액세스들은 채널들에 걸쳐 병렬로 발생하거나 또는 시간에 따라 분배될 수 있다.
채널들이 더 깊을 때 데이터가 메모리 시스템에 상이하게 저장된다. 도 9는 본 발명의 다양한 실시예들에 따라 메모리 시스템(300)에 의해 수신된 데이터를 예시한 개략도이다. 이러한 경우에, 메모리 시스템(300)은 도 8에 표현된 채널들보다 깊은, 16 바이트들의 깊이를 가진 채널들로 어드레싱된 64 바이트들(B[0] 내지 B[63])을 수신하는 것에 대해 도시된다. 도 9에 도시된 데이터에 대한 어드레스들은 하나의 비트가 도 8의 채널 비트들보다 높은, 채널 비트들([n:1])을 가진다. 도 8에서처럼, 메모리 디바이스들(310, 312, 314, 316, 318, 320, 322 및 324)의 각각은 8 바이트들의 프리-페치를 가지며, 메모리 요청의 실행 동안 단일 채널을 위한 바이트들을 수신한다. 메모리 디바이스들(310, 312 및 314)의 각각은 16 바이트들을 수신한다. 메모리 디바이스들(318, 320, 322 및 324)은 어떤 데이터도 수신하지 않는다. 그 결과는 64 바이트들(B[0] 내지 B[63])이 메모리 디바이스들(310, 312, 314 및 316)에 기록된다는 것이다. 각각의 채널은 요청을 완료하기 위해 동시에 또는 상이한 시간들에 액세스될 수 있다.
채널의 깊이를 변경하는 것은 채널 어드레스 비트들이 도 4에 도시된 어드레스(400)와 같은 어드레스에서 보다 낮은 자릿수 어드레스 비트들에 있을 때 가장 큰 영향을 준다. 다중-채널 메모리 시스템의 전력 사용 및 성능은 채널 비트들을 위로 이동시킴으로써 구성될 수 있다(예로서, 스케일링될 수 있다). 얕은 채널이 사용될 때, 메모리 요청 당 액세스된 메모리 디바이스들의 수는 증가하며, 메모리 요청을 위한 액세스 시간을 잠재적으로 감소시킨다. 그러나, 메모리 요청 당 활성화들의 수는 그것이 보다 깊은 채널에 대해서보다 얕은 채널에 대해 더 높다. 예를 들면, 채널 비트들이 도 8에 예시된 바와 같이 얕은 8 바이트 채널을 생성하기 위해 어드레스(400)에서의 비트들([n:0])에 할당될 때, 64 바이트 메모리 요청은 메모리 시스템(300)의 대역폭의 모두를 사용하여 모든 8개의 메모리 디바이스들(310, 312, 314, 316, 318, 320, 322 및 324)을 액세스할 것이다.
보다 깊은 채널이 사용될 때, 메모리 요청 당 액세스된 메모리 디바이스들의 수가 감소하며, 메모리 요청을 위한 액세스 시간을 잠재적으로 증가시킨다. 그러나, 메모리 요청 당 활성화들의 수는 그것이 얕은 채널에 대해서보다 보다 깊은 채널에 대해 더 낮다. 예를 들면, 채널 비트들이 도 9에 예시된 바와 같이 16 바이트 채널을 생성하기 위해 어드레스(400)에서의 비트들([n:1])에 할당된다면, 64 바이트 메모리 요청은 메모리 시스템(300)의 이용가능한 대역폭의 절반을 사용하여, 단지 4개의 메모리 디바이스들(310, 312, 314 및 316)만을 활성화시킬 것이다. 또 다른 예에서, 채널 비트들은 32 바이트 채널을 생성하기 위해 어드레스(400)에서 비트들([n:2])에 할당된다. 64 바이트 메모리 요청은 메모리 시스템(300)의 이용가능한 대역폭의 1/4를 사용하여 2개의 메모리 디바이스들(310, 312)을 액세스할 것이다.
메모리 시스템의 각각의 영역에 대한 채널 깊이는 본 발명의 다양한 실시예들에 따른 전력 사용 및 성능 사이에서의 바람직한 균형에 기초하여 선택된다. 도 1에 도시된 메모리 시스템(140)의 각각의 영역에 대한 채널 깊이는 다음의 방식으로 선택될 수 있다. 제 1 영역(182)은 예를 들면, 낮은 지연 시간 응답 및 얕은 채널 깊이를 갖고 동작하는 범용 프로세서를 제공할 수 있다. 얕은 채널 깊이는 메모리 요청 당 이용가능한 대역폭을 높이기 위해 시스템에서의 모든 메모리 디바이스들의 사용을 야기한다. 제 1 영역(182)은 보다 깊은 채널들을 가진 영역보다 많은 전력을 사용하여 각각의 메모리 요청에 대한 보다 많은 대역폭을 공급할 것이다. 얕은 채널들에서의 긴 메모리 요청의 실행은 1회 이상 채널들 모두의 주변을 루핑(looping)하는 데이터를 야기할 수 있다.
제 2 영역(184)은 예를 들면, 지연 시간에 보다 관대한 그래픽스 프로세서를 지원하기 위해 보다 깊은 채널들을 가질 수 있다. 제 2 영역(184)은 메모리 요청 당 보다 적은 대역폭을 공급할 것이지만, 메모리 셀들의 보다 적은 로우들이 액세스되기 때문에 보다 적은 전력을 사용하여 메모리 요청을 수행할 것이다. 그래픽스 프로세서는 그래픽스 애플리케이션들에 특히 적합하다.
또 다른 예에서, 13개의 메모리 디바이스들을 포함한 메모리 시스템이 본 발명의 다양한 실시예들에 따라 다음의 방식으로 동작될 수 있다. 메모리 시스템의 채널(X)은 메모리 디바이스(0) 내지 메모리 디바이스(7)를 포함하도록 정의된다. 채널(X) 내에서, 영역들(0 내지 F)이 정의된다. 영역들(0 내지 3)은 8 바이트들의 깊이를 갖고 정의된다. 영역들(4 내지 7)은 32 바이트들의 깊이를 갖고 정의된다. 영역들(8 내지 F)은 64 바이트들의 깊이를 갖고 정의된다. 채널(Y)은 메모리 디바이스(8) 내지 메모리 디바이스(11)를 포함하도록 정의된다. 채널(Y) 내에서, 영역들(0 내지 4)이 정의된다. 영역들(0 내지 1)은 64 바이트들의 깊이를 갖고 정의되며 영역들(2 내지 3)은 128 바이트들의 깊이를 갖고 정의된다. 채널(Z)은 단지 나머지 메모리 디바이스(13)로서 정의된다. 채널(Z)은 단지 하나의 메모리 디바이스만을 포함하며 영역적 채널 깊이 매핑을 갖지 않는다. 각각의 영역 및 채널의 전력 사용은 활성 및 비활성 기간들 양쪽 모두에 대해 개별적으로 구성(예로서, 제어)될 수 있으며 성능은 하나의 채널에서 또 다른 채널로 변할 수 있다.
도 10은 본 발명의 다양한 실시예들에 따른 시스템(1000)의 블록도이다. 메모리 요청은 제 1 프로세서(1010)와 같은 마스터로부터 제 1 버스(1016)를 통해 슬레이브(1020)로 전송(예로서, 송신)된다. 시스템(1000)은 또한 제 1 버스(1016)를 통해 슬레이브(1020)에 결합되는 제 2 프로세서(1022)를 포함한다. 슬레이브(1020)는 제 1 버스(1016)를 통해 프로세서들(1010, 1022)과 같은 다수의 마스터들로부터 메모리 요청들을 수신한다. 슬레이브(1020)는 제 2 버스(1024)를 통해 각각의 메모리 요청을 그것의 크기 및 어드레스에 기초하여 메모리 요청을 평가하는 프리-디코딩 블록(pre-decode block)(1030)에 전송한다. 프리-디코딩 블록(1030)은 메모리 요청이 지시되는 메모리 시스템(1060)의 영역, 및 영역에서의 채널들의 깊이를 결정한다. 프리-디코딩 블록(1030)은 메모리 요청이 적절한 채널들에서 실행되도록 메모리 요청에서의 어드레스의 비트들을 재배열한다. 프리-디코더는 타겟팅된 영역에서의 채널들의 깊이에 메모리 요청의 크기를 비교할 수 있으며 서브-트랜잭션(sub-transaction)들을 생성한다. 서브-트랜잭션은 각각의 채널에 기록되거나 또는 그것으로부터 판독될 초기 요청의 부분(예로서, "슬라이스")일 수 있다. 프리-디코딩 블록(1030)은 그 후 메모리 요청을 제 3 버스(1036)를 통해, 메모리 요청이 제 4 버스(1044)를 통해 메모리 제어기(1050)로 전송되기를 기다리는 큐(1040)로 전송한다. 메모리 제어기(1050)는 제 5 버스(1066)를 통해 메모리 시스템(1060)에서의 메모리 요청 또는 서브-트랜잭션을 실행한다. 메모리 요청 또는 서브-트랜잭션은 메모리 제어기(1050)에서의 메모리 맵(1070)에 따라 실행된다. 메모리 시스템(1060)은 메모리 디바이스들(310, 312, 314, 316, 318, 320, 322 및 324)을 포함하여 도 3에 도시된 메모리 시스템(300)일 수 있다. 여기에 설명된 본 발명의 실시예들은 프리-디코딩 블록(1030) 및 메모리 제어기(1050)에 의해 구현된다.
메모리 제어기(1050)는 메모리 시스템(1060)에서의 채널들의 일부 또는 모두에 동시 명령들을 발행(issue)함으로써 메모리 요청을 실행할 수 있다. 메모리 제어기(1050)는 각각의 채널을 사용하여 통신될 바이트들의 수를 결정하기 위해 각각의 채널의 깊이 및 채널들의 수와 메모리 요청의 크기를 비교할 수 있다. 명령들은 각각의 채널이 동일한 수의 메모리 서브-트랜잭션들을 가진다면 동일한 사이클 동안 메모리 시스템(1060)에서의 다수의 채널들에 방송(broadcast)될 수 있으며, 따라서 다수의 채널들은 동일한 명령을 수신한다. 메모리 서브-트랜잭션들의 수가 채널들에 대해 상이하다면, 2개의 상이한 명령들이 메모리 요청을 실행하기 위해 발생될 수 있다. 메모리 서브-트랜잭션은 전체 메모리 요청보다 적게 실행한다. 명령들은 메모리 시스템(1060)에서의 정확한 메모리 디바이스들이 명령들을 수신 및 실행하도록 다수의 칩 선택(chip select; CS) 신호들을 갖고 발행된다. 각각의 채널은 그것이 명령을 수신할 때 메모리 제어기(1050)에 응답한다.
도 11은 본 발명의 다양한 실시예들에 따른 일 방법(1100)의 흐름도이다. 블록(1110)에서, 방법(1100)이 시작된다. 블록(1120)에서, 요청 어드레스를 포함한 메모리 요청이 프리-디코딩 블록에서 마스터로부터 수신된다. 블록(1130)에서, 메모리 요청의 크기 및 요청 어드레스가 지시되는 메모리 시스템의 영역이 결정된다. 블록(1140)에서, 요청 어드레스가 지시되는 메모리 시스템의 영역에서의 채널들의 깊이가 결정된다. 블록(1150)에서, 요청 어드레스의 비트들이, 요청 어드레스가 메모리 시스템의 제 1 영역에서의 메모리 셀들에 대응한다면 제 1 정의에 따라 제 1 메모리 어드레스로 재배열된다. 블록(1160)에서, 요청 어드레스의 비트들이, 요청 어드레스가 메모리 시스템의 제 2 영역에서의 메모리 셀들에 대응한다면 제 2 정의에 따라 제 2 메모리 어드레스로 재배열된다. 블록(1170)에서, 메모리 요청은 프리-디코딩 블록 및 메모리 시스템 사이에서 결합된 메모리 제어기에서 실행된다. 블록(1180)에서, 방법(1100)이 종료된다. 다양한 실시예들이 도 11에 도시된 것들보다 더 많거나 또는 보다 적은 활동들을 가질 수 있다. 몇몇 실시예들에서, 도 11에서의 활동들이 반복되고, 서로 대체되고, 및/또는 직렬 또는 병렬 방식으로 수행될 수 있다.
도 12는 본 발명의 다양한 실시예들에 따른 일 방법(1200)의 흐름도이다. 블록(1210)에서, 방법(1200)이 시작된다. 블록(1220)에서, 메모리 셀들은 메모리 셀들의 제 1 영역 및 메모리 셀들의 제 2 영역으로 나뉜다. 블록(1230)에서, 제 1 어드레스 정의가 제 1 영역에서의 어떤 메모리 셀들이 어드레싱될 것인지에 따라 선택된다. 블록(1240)에서, 제 2 어드레스 정의는 제 2 영역에서의 어떤 메모리 셀들이 어드레싱될 것인지에 따라 선택되며, 제 2 어드레스 정의는 제 1 어드레스 정의와 상이하다. 블록(1250)에서, 방법(1200)이 종료된다. 다양한 실시예들이 도 12에 도시된 것들보다 많거나 또는 더 적은 활동들을 가질 수 있다. 몇몇 실시예들에서, 도 11 및 도 12에서의 활동들은 반복되고, 서로 대체되고, 및/또는 직렬 또는 병렬 방식으로 수행될 수 있다.
도 13은 본 발명의 다양한 실시예들에 따른 메모리 셀의 어드레스(1300)의 블록도이다. 어드레스(1300)는 LSB(1310)([0]) 및 MSB(1320)([31]) 사이에서의 32 비트들([31:0])로 구성된다. 어드레스(1300)는 MSB(1320)를 포함한 최고 자릿수 비트들인 로우 비트들(1330)([31:16])을 포함한다. 어드레스(1300)는 또한 뱅크 비트들(1340)([14:12]), 컬럼 비트들(1350)([10:1]) 및 3개의 채널 비트들(1360)([15], [11], 및 [0])을 포함한다. 로우 비트들(1330), 뱅크 비트들(1340) 및 컬럼 비트들(1350)은 단일 채널 비트(1360)에 의해 서로 분리된다. 채널 비트들(1360)은 어드레스(1300)를 통해 분배되며 서로 인접하지 않는다.
메모리 요청들에 빠르고 효율적으로 응답하는 메모리 시스템들이 유용하다. 이러한 시스템들은 여기에 설명된 다양한 실시예들을 구현함으로써 기인할 수 있으며, 이것은 메모리 시스템이 보다 적은 전력을 갖고 동작하는 몇몇 영역들 및 전용 채널들을 사용하지 않고 낮은 지연 시간을 갖고 메모리 요청들에 응답하는 다른 영역들을 갖도록 허용하기 위해서와 같이, 메모리 시스템을 영역들로 나누는 것 및 각각의 영역을 상이한 방식으로 액세스하는 것을 포함하기 위해 동작할 수 있다. 영역들은 여기에 저장될 데이터의 유형에 따라 정의될 수 있다. 전력 사용 및 지연 시간 사이에서의 관계는 단일 메모리 시스템에 걸쳐 변경될 수 있다. 각각의 영역의 크기는 융통성 있으며 메모리 시스템에서의 메모리 디바이스들의 물리적 배열에 의해서 반드시 결정되지는 않는다.
본 발명의 다양한 실시예들에 따라 여기에 설명된 메모리 시스템들 및 방법들은 메모리 시스템의 상이한 영역들에 걸쳐 메모리 셀 그룹핑들의 다양한 입도를 가능하게 한다. 메모리 셀들의 이웃하는 영역들은 물리적 메모리 디바이스들의 크기에 기초하는 것이 아닌 오히려 전력 사용 및 성능 사이에서의 바람직한 균형에 기초하는 상이한 특성들을 가진 채널들을 가질 수 있다. 메모리 요청은 원하는 균형을 달성하기 위해 단일 채널 또는 다수의 채널들에서 프로세싱될 수 있다. 따라서 메모리 시스템에 대한 액세스의 패턴들은 채널들의 구성 및 메모리 요청들의 크기에 의존할 수 있다. 보다 작은 메모리 요청은 전력을 절감하기 위해 메모리 셀들의 보다 적은 채널들을 갖고 달성될 수 있다. 각각의 메모리 요청은 메모리 요청의 크기 및 채널들의 정의에 기초하여 메모리 셀들의 채널들에 걸쳐 분배될 수 있다. 예를 들면, 32 비트들이 한꺼번에 모든 256 비트들을 액세스하기보다는 전체로서 256 비트들을 가진 영역에서의 4개의 64 비트 채널들 중 하나에서 액세스될 수 있다. 따라서, 메모리 요청들은 과도한 수들의 메모리 셀들을 예약하는 것을 회피하도록 구현될 수 있다. 제안된 시스템은 각각의 요청의 크기에 기초하여 메모리 셀들의 액세스를 구성할 수 있다.
메모리 시스템을 관리하는 예시적인 구조들 및 방법들이 설명되었다. 특정 실시예들이 설명되었지만, 다양한 수정들 및 변경들이 이들 실시예들에 대해 이루어질 수 있다는 것이 분명할 것이다. 예를 들면, 메모리 시스템은 다수의 채널들을 가진 단일 메모리 디바이스 또는 각각 하나 이상의 채널들을 가진 다수의 메모리 디바이스들을 포함할 수 있다. 따라서, 명세서 및 도면들은 제한적인 의미라기보다는 예시적인 것으로 간주되는 것이다.
본 개시의 요약은 판독자가 기술적 개시의 특성을 빠르게 알아내도록 허용하는 요약을 요구하는, 37 C.F.R. §1.72(b)를 준수하도록 제공된다. 그것은 청구항들을 해석하거나 또는 제한하기 위해 사용되지 않는다는 점을 포함해서 제안된다. 또한, 앞서 말한 상세한 설명에서, 다양한 특징들은 본 개시를 간소화하기 위해 단일 실시예에서 함께 그룹화된다. 본 개시의 이러한 방법은 청구항들을 제한하는 것으로서 해석되지 않는다. 따라서, 다음의 청구항들은 별개의 실시예로서 자립하는 각각의 청구항을 갖고, 상세한 설명에 통합된다.

Claims (41)

  1. 메모리 셀들을 액세스하는 방법으로서, 상기 셀들이 적어도 제 1 영역 및 제 2 영역으로 나뉘는, 상기 메모리 셀들을 액세스하는 방법에 있어서,
    제 1 어드레스 정의에 따라 상기 제 1 영역에서의 메모리 셀을 액세스하는 단계; 및
    제 2 어드레스 정의에 따라 상기 제 2 영역에서의 메모리 셀을 액세스하는 단계로서, 상기 제 2 어드레스 정의는 상기 제 1 어드레스 정의와 상이한, 단계를 포함하는, 메모리 셀들을 액세스하는 방법.
  2. 청구항 1에 있어서,
    제 1 어드레스 정의에 따라 상기 제 1 영역에서의 상기 메모리 셀을 액세스하는 단계는, 제 1 채널 정의에 따라 상기 제 1 영역에서의 상기 메모리 셀을 액세스하는 단계를 포함하며; 및
    제 2 어드레스 정의에 따라 상기 제 2 영역에서의 상기 메모리 셀을 액세스하는 단계는, 제 2 채널 정의에 따라 상기 제 2 영역에서의 상기 메모리 셀을 액세스하는 단계를 포함하며, 상기 제 2 채널 정의는 상기 제 1 채널 정의와 상이한, 메모리 셀들을 액세스하는 방법.
  3. 청구항 1에 있어서,
    상기 영역들 중 어떤 것이 메모리 요청 어드레스에 대응하는 상기 메모리 셀들을 갖는지를 결정하기 위해 상기 메모리 요청 어드레스에서의 영역 숫자를 판독하는 단계를 더 포함하는, 메모리 셀들을 액세스하는 방법.
  4. 청구항 1에 있어서,
    상기 영역들 중 어떤 것이 메모리 요청 어드레스에 대응하는 상기 메모리 셀을 갖는지를 결정하기 위해 레지스터에서의 값과 상기 메모리 요청 어드레스를 비교하는 단계를 더 포함하는, 메모리 셀들을 액세스하는 방법.
  5. 청구항 4에 있어서,
    상기 정의들 중 하나를 변경하기 위해 상기 레지스터를 재프로그래밍하는 단계를 더 포함하는, 메모리 셀들을 액세스하는 방법.
  6. 청구항 1에 있어서,
    상기 제 1 영역이 메모리 요청 어드레스에 대응하는 상기 메모리 셀을 갖는지 여부를 결정하기 위해 제 1 레지스터에서의 값과 상기 메모리 요청 드레스를 비교하는 단계; 및
    상기 제 2 영역이 상기 메모리 요청 어드레스에 대응하는 상기 메모리 셀을 갖는지 여부를 결정하기 위해 제 2 레지스터에서의 값과 상기 메모리 요청 어드레스를 비교하는 단계를 더 포함하는, 메모리 셀들을 액세스하는 방법.
  7. 메모리 요청을 수신하는 단계; 및
    상기 메모리 요청의 크기 및 상기 채널들의 정의에 기초하여 메모리 셀들의 복수의 채널들에 걸쳐 상기 메모리 요청을 분배하는 단계를 포함하는, 방법.
  8. 어드레스의 복수의 클래스들의 모두를 가진 메모리 시스템의 제 1 영역에서의 메모리 셀들을 액세스하는 단계로서, 상기 어드레스의 클래스들 중 선택된 클래스는 제 1 어드레스 정의를 갖는, 단계; 및
    상기 어드레스의 클래스들의 모두를 가진 상기 메모리 시스템의 제 2 영역에서의 메모리 셀들을 액세스하는 단계로서, 상기 어드레스의 선택된 클래스는 상기 제 1 어드레스 정의와 상이한 제 2 어드레스 정의를 갖는, 단계를 포함하는, 방법,
  9. 청구항 8에 있어서,
    상기 어드레스의 클래스들은 로우(row) 어드레스, 컬럼(column) 어드레스, 채널 어드레스 및 뱅크(bank) 어드레스를 포함하는, 방법.
  10. 청구항 9에 있어서,
    상기 어드레스의 클래스들은 영역 어드레스를 더 포함하는, 방법.
  11. 청구항 8에 있어서,
    제 2 영역에서의 메모리 셀들을 액세스하는 단계는, 상기 제 1 영역에서의 메모리 셀들을 액세스하기 위해 사용된 어드레스에서의 채널 어드레스 숫자들보다 자릿수가 더 높은 채널 어드레스 숫자들을 포함한 어드레스를 가진 상기 제 2 영역에서의 메모리 셀들을 액세스하는 단계를 더 포함하는, 방법.
  12. 청구항 8에 있어서,
    제 2 영역에서의 메모리 셀들을 액세스하는 단계는, 어드레스에서 인접하지 않는 채널 어드레스 숫자들을 가진 상기 제 2 영역에서의 메모리 셀들을 액세스하는 단계를 더 포함하는, 방법.
  13. 청구항 8에 있어서,
    상기 어드레스의 선택된 클래스는 채널 어드레스를 포함하는, 방법.
  14. 메모리 시스템의 메모리 셀들의 제 1 영역에서 데이터를 액세스하는 단계로서, 상기 메모리 시스템의 상기 메모리 셀들은 채널들로 나뉘며, 각각의 채널은 복수의 메모리 셀들을 포함하는, 단계; 및
    상기 메모리 시스템의 메모리 셀들의 제 2 영역에서 데이터를 액세스하는 단계로서, 상기 제 1 영역에서 다음 채널로 가기 전에 채널당 액세스된 바이트들의 수가 상기 제 2 영역에서 다음 채널로 가기 전에 채널당 액세스된 바이트들의 수와 상이한, 단계를 포함하는, 방법.
  15. 청구항 14에 있어서,
    메모리 셀들의 상기 제 2 영역에서 데이터를 액세스하는 단계는, 메모리 셀들의 상기 제 1 영역에서 데이터를 액세스하기 위해 사용되는 것보다 적은 전력을 갖고 메모리 셀들의 상기 제 2 영역에서의 상기 데이터를 액세스하는 단계를 더 포함하는, 방법.
  16. 청구항 14에 있어서,
    메모리 셀들의 상기 제 2 영역에서 데이터를 액세스하는 단계는, 메모리 셀들의 상기 제 1 영역에서의 데이터를 액세스하기 위해 사용되는 것보다 큰 지연 시간(latency)을 갖고 메모리 셀들의 상기 제 2 영역에서의 상기 데이터를 액세스하는 단계를 더 포함하는, 방법.
  17. 청구항 14에 있어서,
    메모리 셀들의 상기 제 2 영역에서의 데이터를 액세스하는 단계는, 메모리 셀들의 상기 제 2 영역에서의 상기 채널들 중 적어도 몇몇에 명령들을 방송하는 단계를 더 포함하는, 방법.
  18. 마스터로부터 메모리 요청 내의 데이터를 수신하는 단계;
    상기 마스터가 제 1 유형이면 메모리 시스템의 메모리 셀들의 제 1 영역에 상기 데이터를 기록하는 단계; 및
    상기 마스터가 제 2 유형이면 상기 메모리의 메모리 셀들의 제 2 영역에 상기 데이터를 기록하는 단계를 포함하는, 방법.
  19. 청구항 18에 있어서,
    제 1 영역에 상기 데이터를 기록하는 단계는, 상기 마스터가 선택된 양의 지연 시간을 용인하도록 동작한다면 상기 메모리 시스템의 메모리 셀들의 상기 제 1 영역에 상기 데이터를 기록하는 단계를 더 포함하며;
    제 2 영역에 상기 데이터를 기록하는 단계는, 상기 마스터가 상기 선택된 양의 지연 시간을 용인하지 않는다면 상기 메모리 시스템의 메모리 셀들의 상기 제 2 영역에 상기 데이터를 기록하는 단계를 더 포함하는, 방법.
  20. 청구항 18에 있어서,
    제 1 영역에 상기 데이터를 기록하는 단계는, 상기 마스터가 범용 프로세서를 포함한다면 상기 메모리 시스템의 메모리 셀들의 상기 제 1 영역에 상기 데이터를 기록하는 단계를 더 포함하며;
    제 2 영역에 상기 데이터를 기록하는 단계는, 상기 마스터가 그래픽스 프로세서를 포함한다면 상기 메모리 시스템의 메모리 셀들의 상기 제 2 영역에 상기 데이터를 기록하는 단계를 더 포함하는, 방법.
  21. 청구항 18에 있어서,
    제 1 영역에 상기 데이터를 기록하는 단계는, 상기 제 1 영역에서의 모든 메모리 디바이스들에 상기 데이터를 기록하는 단계를 더 포함하며,
    제 2 영역에 상기 데이터를 기록하는 단계는, 상기 제 2 영역에서의 모든 메모리 디바이스들보다 적은 메모리 디바이스에 상기 데이터를 기록하는 단계를 더 포함하는, 방법.
  22. 프리-디코딩 블록(pre-decode block)으로서,
    메모리 시스템에서의 메모리 셀들에 대응하는 메모리 요청과 연관된 요청 어드레스를 수신하고;
    상기 요청 어드레스가 상기 메모리 시스템의 제 1 영역에서의 메모리 셀들에 대응한다면 제 1 정의에 따라 제 1 메모리 어드레스로 상기 요청 어드레스를 재배열하며;
    상기 요청 어드레스가 상기 메모리 시스템의 제 2 영역에서의 메모리 셀들에 대응한다면 제 2 정의에 따라 제 2 메모리 어드레스로 상기 요청 어드레스를 재배열하는 것으로서, 상기 제 2 정의는 상기 제 1 정의와 상이한, 상기 제 2 정의에 따라 제 2 메모리 어드레스로 상기 요청 어드레스를 재배열하기 위한, 상기 프리-디코딩 블록; 및
    상기 제 1 또는 상기 제 2 메모리 어드레스를 수신하고 상기 메모리 시스템에서 상기 메모리 요청의 적어도 일 부분을 실행하도록 구성된 메모리 제어기를 포함하는, 시스템.
  23. 청구항 22에 있어서,
    상기 메모리 시스템은 버스를 통해 데이터를 전달하기 위해 상기 버스에 결합된 데이터 핀들을 포함하는 복수의 메모리 디바이스들을 포함하는, 시스템.
  24. 청구항 22에 있어서,
    상기 메모리 디바이스들은 동적 랜덤 액세스 메모리(DRAM) 디바이스들, 동기식 동적 랜덤 액세스 메모리(SDRAM) 디바이스들, 및/또는 플래시 메모리 디바이스들을 임의의 조합으로 포함하는, 시스템.
  25. 청구항 22에 있어서,
    상기 프리-디코딩 블록은 복수의 마스터들로부터 메모리 요청들을 수신하기 위해 버스를 통해 상기 마스터들에 결합되는, 시스템.
  26. 청구항 25에 있어서,
    상기 마스터들 중 제 1 마스터는 범용 프로세서를 포함하는, 시스템.
  27. 청구항 25에 있어서,
    상기 마스터들 중 제 2 마스터는 그래픽스 프로세서를 포함하는, 시스템.
  28. 프리-디코딩 블록에서 마스터로부터 메모리 요청과 연관된 요청 어드레스를 수신하는 단계;
    상기 요청 어드레스가 지시되는 메모리 시스템의 영역을 결정하는 단계;
    상기 요청 어드레스가 상기 메모리 시스템의 제 1 영역에서의 메모리 셀들에 대응한다면 제 1 정의에 따라 제 1 메모리 어드레스로 상기 요청 어드레스의 숫자들을 재배열하는 단계; 및
    상기 요청 어드레스가 상기 메모리 시스템의 제 2 영역에서의 메모리 셀들에 대응한다면 제 2 정의에 따라 제 2 메모리 어드레스로 상기 요청 어드레스의 상기 숫자들을 재배열하는 단계로서, 상기 제 2 정의는 상기 제 1 정의와 상이한, 단계를 포함하는, 방법.
  29. 청구항 28에 있어서,
    상기 요청 어드레스가 지시되는 상기 영역의 깊이와 상기 메모리 요청의 크기를 비교하는 단계를 더 포함하는, 방법.
  30. 청구항 29에 있어서,
    서브-트랜잭션들(sub-transaction)을 생성하는 단계를 더 포함하며, 각각의 서브-트랜잭션은 상기 영역에 기록되거나 또는 상기 영역으로부터 판독될 상기 메모리 요청의 일 부분인, 방법.
  31. 청구항 28에 있어서,
    상기 요청 어드레스가 지시되는 상기 메모리 시스템의 상기 영역에서의 채널들의 깊이를 결정하는 단계를 더 포함하는, 방법.
  32. 청구항 28에 있어서,
    상기 메모리 시스템의 상기 제 2 영역에서의 채널들은 상기 메모리 시스템의상기 제 1 영역에서의 채널들보다 많은 바이트들을 포함하는, 방법.
  33. 청구항 28에 있어서,
    상기 프리-디코딩 블록과 상기 메모리 시스템 사이에 결합된 메모리 제어기에서 상기 메모리 요청의 적어도 일 부분을 실행하는 단계를 더 포함하는, 방법.
  34. 적어도 제 1 및 제 2 영역들로 분할된 복수의 메모리 셀들을 포함하며, 상기 제 1 영역의 어드레스 정의는 상기 제 2 영역의 어드레스 정의와 상이한, 시스템.
  35. 청구항 34에 있어서,
    상기 영역들의 각각은 각각의 영역에서 발생할 액세스의 유형에 대하여 구성되는, 시스템.
  36. 청구항 35에 있어서,
    상기 각각의 영역에서 발생할 상기 액세스의 유형은 상기 각각의 영역에 저장된 데이터의 유형에 기초하는, 시스템.
  37. 청구항 34에 있어서,
    상기 영역들의 각각은 상기 각각의 영역에 저장될 데이터의 유형에 기초하여 구성되는, 시스템.
  38. 청구항 34에 있어서,
    적어도 제 1 및 제 2 레지스터들을 더 포함하며, 상기 제 1 레지스터는 상기 제 1 영역을 정의하며 상기 제 2 레지스터는 상기 제 2 영역을 정의하는, 시스템.
  39. 청구항 34에 있어서,
    상기 어드레스 정의들은 채널 어드레스 정의들인, 시스템.
  40. 청구항 34에 있어서,
    상기 제 1 영역은 상기 제 2 영역과 상이한 채널 깊이를 갖는, 시스템.
  41. 메모리 시스템에서 메모리 요청들을 실행하도록 구성된 메모리 제어기로서, 상기 메모리 제어기는 상기 메모리 시스템에서의 메모리 셀들을 복수의 영역들로 분할하는 메모리 맵을 포함하며, 상기 영역들의 각각은 그 자신의 어드레스 정의를 갖는, 메모리 제어기.
KR1020137025982A 2011-03-07 2012-03-06 메모리 셀들을 액세스하는 방법들, 메모리 요청들을 분배하는 방법, 시스템들, 및 메모리 제어기들 KR101993651B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/042,164 US8892844B2 (en) 2011-03-07 2011-03-07 Methods of accessing memory cells, methods of distributing memory requests, systems, and memory controllers
US13/042,164 2011-03-07
PCT/US2012/027905 WO2012122182A2 (en) 2011-03-07 2012-03-06 Methods of accessing memory cells, methods of distributing memory requests, systems, and memory controllers

Publications (2)

Publication Number Publication Date
KR20140013010A true KR20140013010A (ko) 2014-02-04
KR101993651B1 KR101993651B1 (ko) 2019-06-27

Family

ID=46797130

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137025982A KR101993651B1 (ko) 2011-03-07 2012-03-06 메모리 셀들을 액세스하는 방법들, 메모리 요청들을 분배하는 방법, 시스템들, 및 메모리 제어기들

Country Status (6)

Country Link
US (3) US8892844B2 (ko)
EP (2) EP2684133B1 (ko)
KR (1) KR101993651B1 (ko)
CN (2) CN103493026B (ko)
TW (1) TWI539286B (ko)
WO (1) WO2012122182A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170114837A (ko) * 2016-04-06 2017-10-16 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
US11835992B2 (en) 2018-09-12 2023-12-05 Micron Technology, Inc. Hybrid memory system interface

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8892844B2 (en) 2011-03-07 2014-11-18 Micron Technology, Inc. Methods of accessing memory cells, methods of distributing memory requests, systems, and memory controllers
US10838886B2 (en) 2011-04-19 2020-11-17 Micron Technology, Inc. Channel depth adjustment in memory systems
US9208755B2 (en) 2012-12-03 2015-12-08 Nvidia Corporation Low power application execution on a data processing device having low graphics engine utilization
US9183057B2 (en) * 2013-01-21 2015-11-10 Micron Technology, Inc. Systems and methods for accessing memory
US10042750B2 (en) * 2013-03-15 2018-08-07 Micron Technology, Inc. Apparatuses and methods for adaptive control of memory using an adaptive memory controller with a memory management hypervisor
US9507628B1 (en) 2015-09-28 2016-11-29 International Business Machines Corporation Memory access request for a memory protocol
KR20180061851A (ko) 2016-11-30 2018-06-08 삼성전자주식회사 바이트 액세서블 인터페이스 및 블록 액세서블 인터페이스를 지원하는 스토리지 장치 및 이를 포함하는 전자 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6816165B1 (en) * 2000-12-13 2004-11-09 Micron Technology, Inc. Memory system having multiple address allocation formats and method for use thereof
US20060233367A1 (en) * 2005-01-10 2006-10-19 Microsoft Corporation System and methods for an overlay disk and cache using portable flash memory
US20060294325A1 (en) * 2005-06-23 2006-12-28 James Akiyama Memory micro-tiling

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5465332A (en) * 1992-09-21 1995-11-07 International Business Machines Corporation Selectable 8/16 bit DMA channels for "ISA" bus
JPH06332664A (ja) 1993-03-23 1994-12-02 Toshiba Corp 表示制御システム
JPH08278916A (ja) 1994-11-30 1996-10-22 Hitachi Ltd マルチチャネルメモリシステム、転送情報同期化方法及び信号転送回路
US5761694A (en) * 1995-11-30 1998-06-02 Cirrus Logic, Inc. Multi-bank memory system and method having addresses switched between the row and column decoders in different banks
US5787445A (en) 1996-03-07 1998-07-28 Norris Communications Corporation Operating system including improved file management for use in devices utilizing flash memory as main memory
JPH09259041A (ja) 1996-03-27 1997-10-03 Hitachi Ltd キャッシュメモリ制御方式
US6470409B1 (en) * 1996-11-26 2002-10-22 Xilinx Inc. Interface system having a programmable number of channels and methods of implementing same
JPH10232819A (ja) 1997-02-20 1998-09-02 Canon Inc メモリ制御装置およびメモリアクセス方法
US5956743A (en) 1997-08-25 1999-09-21 Bit Microsystems, Inc. Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
JP3546788B2 (ja) * 1999-12-20 2004-07-28 日本電気株式会社 メモリ制御回路
WO2003085677A1 (fr) 2002-04-05 2003-10-16 Renesas Technology Corp. Memoire non volatile
KR101051506B1 (ko) 2002-09-30 2011-07-22 텔레폰악티에볼라겟엘엠에릭슨(펍) 스케일러블 멀티채널 메모리 액세스를 위한 방법 및 메모리제어기
US7093047B2 (en) 2003-07-03 2006-08-15 Integrated Device Technology, Inc. Integrated circuit memory devices having clock signal arbitration circuits therein and methods of performing clock signal arbitration
TWI299497B (en) 2004-06-24 2008-08-01 Via Tech Inc Method and related apparatus for accessing memory apparatus
JP3955862B2 (ja) 2004-09-27 2007-08-08 株式会社ルネサステクノロジ データ処理装置、及びそれを用いたシステム
US8656141B1 (en) 2004-12-13 2014-02-18 Massachusetts Institute Of Technology Architecture and programming in a parallel processing environment with switch-interconnected processors
US7502908B2 (en) * 2006-05-04 2009-03-10 International Business Machines Corporation Method for providing an address format compatible with different addressing formats used for addressing different sized address spaces
US7797319B2 (en) 2006-05-15 2010-09-14 Algebraix Data Corporation Systems and methods for data model mapping
US7525842B2 (en) 2007-01-25 2009-04-28 Micron Technology, Inc. Increased NAND flash memory read throughput
US9292436B2 (en) 2007-06-25 2016-03-22 Sonics, Inc. Various methods and apparatus to support transactions whose data address sequence within that transaction crosses an interleaved channel address boundary
JP2009053675A (ja) 2007-07-30 2009-03-12 Nippon Synthetic Chem Ind Co Ltd:The 偏光板用接着剤、偏光板、およびその製造方法
JP5731730B2 (ja) * 2008-01-11 2015-06-10 ピーエスフォー ルクスコ エスエイアールエルPS4 Luxco S.a.r.l. 半導体記憶装置及びその半導体記憶装置を含むデータ処理システム
KR100948158B1 (ko) 2008-06-16 2010-03-18 엘지전자 주식회사 그래픽 코어를 포함하는 멀티 프로세서, 이를 구비한컴퓨터 및 이의 메모리 운용방법
US8386750B2 (en) * 2008-10-31 2013-02-26 Cray Inc. Multiprocessor system having processors with different address widths and method for operating the same
US7859932B2 (en) 2008-12-18 2010-12-28 Sandisk Corporation Data refresh for non-volatile storage
US8018752B2 (en) 2009-03-23 2011-09-13 Micron Technology, Inc. Configurable bandwidth memory devices and methods
CN101702326B (zh) * 2009-10-30 2012-08-29 曙光信息产业(北京)有限公司 内存控制器
US8892844B2 (en) * 2011-03-07 2014-11-18 Micron Technology, Inc. Methods of accessing memory cells, methods of distributing memory requests, systems, and memory controllers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6816165B1 (en) * 2000-12-13 2004-11-09 Micron Technology, Inc. Memory system having multiple address allocation formats and method for use thereof
US20060233367A1 (en) * 2005-01-10 2006-10-19 Microsoft Corporation System and methods for an overlay disk and cache using portable flash memory
US20060294325A1 (en) * 2005-06-23 2006-12-28 James Akiyama Memory micro-tiling
KR20080014066A (ko) * 2005-06-23 2008-02-13 인텔 코포레이션 메모리 제어기, 데이터 반환 방법 및 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170114837A (ko) * 2016-04-06 2017-10-16 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
US11835992B2 (en) 2018-09-12 2023-12-05 Micron Technology, Inc. Hybrid memory system interface

Also Published As

Publication number Publication date
EP2684133B1 (en) 2018-05-23
US10162557B2 (en) 2018-12-25
CN107025181A (zh) 2017-08-08
US8892844B2 (en) 2014-11-18
CN103493026B (zh) 2017-02-15
EP3373150B1 (en) 2020-05-13
US20180300079A1 (en) 2018-10-18
WO2012122182A3 (en) 2013-01-31
CN103493026A (zh) 2014-01-01
EP2684133A4 (en) 2015-05-06
TWI539286B (zh) 2016-06-21
KR101993651B1 (ko) 2019-06-27
US20150074370A1 (en) 2015-03-12
TW201243606A (en) 2012-11-01
EP3373150A1 (en) 2018-09-12
US20120233413A1 (en) 2012-09-13
WO2012122182A2 (en) 2012-09-13
EP2684133A2 (en) 2014-01-15
CN107025181B (zh) 2020-07-31
US9933972B2 (en) 2018-04-03

Similar Documents

Publication Publication Date Title
US10162557B2 (en) Methods of accessing memory cells, methods of distributing memory requests, systems, and memory controllers
US10255191B2 (en) Logical memory address regions
CN108874303B (zh) 非易失性存储器命令冲突避免的储存系统和方法
EP1899818A2 (en) Identifying and accessing individual memory devices in a memory channel
CN106055495B (zh) 用于控制半导体装置的方法
US11029746B2 (en) Dynamic power management network for memory devices
US11797201B2 (en) Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems
US20210141735A1 (en) Bandwidth boosted stacked memory
RU2481652C1 (ru) Интегральная схема с многопортовой суперячейкой памяти и схемой коммутации маршрута передачи данных
CN104021094B (zh) 数据储存装置与快闪存储器控制方法
CN115237602A (zh) 一种归一化ram及其分配方法
US20220318015A1 (en) Enforcing data placement requirements via address bit swapping
CN104407985B (zh) 存储器地址映射方法及存储器地址映射系统
US20240111672A1 (en) Data co-location using address hashing for high-performance processing in memory
US20230060322A1 (en) Memory channel controller operation
KR101591583B1 (ko) 캐싱 장치 및 방법

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