KR102623702B1 - 메모리 버퍼를 포함하는 메모리 시스템 - Google Patents
메모리 버퍼를 포함하는 메모리 시스템 Download PDFInfo
- Publication number
- KR102623702B1 KR102623702B1 KR1020160087258A KR20160087258A KR102623702B1 KR 102623702 B1 KR102623702 B1 KR 102623702B1 KR 1020160087258 A KR1020160087258 A KR 1020160087258A KR 20160087258 A KR20160087258 A KR 20160087258A KR 102623702 B1 KR102623702 B1 KR 102623702B1
- Authority
- KR
- South Korea
- Prior art keywords
- address
- memory
- memory module
- register file
- abandoned
- Prior art date
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 40
- 239000004065 semiconductor Substances 0.000 title 1
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 238000000034 method Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 9
- 230000015556 catabolic process Effects 0.000 description 4
- 238000006731 degradation reaction Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/02—Disposition of storage elements, e.g. in the form of a matrix array
- G11C5/04—Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1045—Read-write mode select circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/22—Control and timing of internal memory operations
- G11C2207/2209—Concurrent read and write
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/22—Control and timing of internal memory operations
- G11C2207/2245—Memory devices with an internal cache buffer
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1042—Read-write modes for single port memories, i.e. having either a random port or a serial port using interleaving techniques, i.e. read-write of one part of the memory while preparing another part
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)
- Microelectronics & Electronic Packaging (AREA)
- Dram (AREA)
Abstract
본 발명의 일 실시예에 의한 메모리 시스템은 제 1 주소에 의해 액세스되는 메모리 모듈; 호스트 요청에 따라 상기 메모리 모듈에 대한 읽기 또는 쓰기 명령을 제공하는 메모리 컨트롤러; 제 2 주소에 의해 액세스되는 메모리 버퍼를 포함하되, 상기 메모리 버퍼는 상기 메모리 모듈의 인터리빙 유닛에 대응하는 적어도 둘 이상의 엔트리 공간을 포함하는 레지스터 파일을 포함하되, 상기 둘 이상의 엔트리 공간은 동시에 접근 가능한 서로 다른 주소 영역에 위치한다.
Description
본 발명은 메모리 버퍼를 포함하는 메모리 시스템에 관한 것으로서, 보다 구체적으로는 메모리 모듈에 대한 데이터 읽기/쓰기에 있어서 발생할 수 있는 성능 저하 현상을 방지할 수 있는 메모리 버퍼를 포함하는 메모리 시스템에 관한 것이다.
도 1은 종래의 메모리 시스템의 블록도이다.
종래의 메모리 시스템은 메모리 버퍼(10), 다수의 메모리 모듈(31 - 34) 및 메모리 버퍼(10)를 통해 다수의 메모리 모듈(31 ~ 34)의 읽기 쓰기를 제어하는 메모리 컨트롤러(20)를 포함한다.
다수의 메모리 모듈(31 - 34)은 하나의 메모리 공간(30)에 포함된다.
메모리 버퍼(10)는 다수의 읽기 FIFO(11 - 14) 및 다수의 쓰기 FIFO(15 - 18)를 포함한다.
읽기 FIFO(11)는 대응하는 메모리 모듈(31)로부터 읽은 데이터를 저장하고, 읽기 FIFO(11)에 저장된 데이터는 메모리 컨트롤러(20)에 제공된다.
쓰기 FIFO(15)는 메모리 컨트롤러(20)로부터 수신한 데이터를 저장하고 저장된 데이터는 대응하는 메모리 모듈(31)에 기록된다.
종래의 메모리 버퍼(10)에서 읽기 FIFO(11)와 쓰기 FIFO(15)는 읽기 요청이나 쓰기 요청을 처리하는데 있어서 데이터를 임시 저장하는 역할을 수행하는데 그친다.
따라서 메모리 모듈(31)에서 데이터를 읽거나 메모리 모듈(31)에 데이터를 기록하는데 성능 저하가 있는 경우 메모리 버퍼(10)가 존재하여도 메모리 시스템의 성능이 저하되는 현상을 방지할 수 없다.
예를 들어 도 1에서 메모리 모듈(31)은 다수의 디램 칩을 포함하며 각 디램 칩은 다수의 뱅크를 포함한다.
디램 칩에서 하나의 뱅크에 포함된 서로 다른 두 개의 로우 주소에 대해서 읽기 요청을 수행하기 위해서는 하나의 로우 주소에 대해서 액티브- 읽기-프리차지를 수행하고 다른 로우 주소에 대해서 액티브-읽기 동작을 수행해야 한다.
따라서 동일한 뱅크에 속한 다수의 로우 주소에 대해서 읽기 동작을 수행하는 경우 읽기 시간이 증가하는 문제가 있다.
따라서 디램 칩의 동일한 뱅크에 포함된 로우 주소를 연속적으로 액세스하는 경우에는 성능 개선을 기대할 수 없다. 쓰기 동작에 대해서도 위와 유사한 문제가 발생한다.
이에 따라 메모리 모듈(31)에서 데이터를 읽고 쓰는데 있어서 발생할 수 있는 성능 저하를 줄일 수 있는 새로운 메모리 버퍼를 포함하는 메모리 시스템이 요구되고 있다.
본 발명은 메모리 모듈에 대한 읽기 또는 쓰기 동작 시 성능 저하를 방지할 수 있는 메모리 버퍼를 포함하는 메모리 시스템을 제공한다.
본 발명의 일 실시예에 의한 메모리 시스템은 제 1 주소에 의해 액세스되는 메모리 모듈; 호스트 요청에 따라 상기 메모리 모듈에 대한 읽기 또는 쓰기 명령을 제공하는 메모리 컨트롤러; 제 2 주소에 의해 액세스되는 메모리 버퍼를 포함하되, 상기 메모리 버퍼는 상기 메모리 모듈의 인터리빙 유닛에 대응하는 적어도 둘 이상의 엔트리 공간을 포함하는 레지스터 파일을 포함하되, 상기 둘 이상의 엔트리 공간은 동시에 접근 가능한 서로 다른 주소 영역에 위치한다.
본 발명은 메모리 버퍼를 어드레싱 가능한 레지스터 파일을 포함하도록 구성하고 메모리 모듈에 대한 주소와 레지스터 파일에 대한 주소 사이의 주소 변환을 통해 메모리 모듈에 대한 읽기 및 쓰기 동작 시 발생할 수 있는 성능 저하를 방지하여 메모리 시스템의 성능을 향상시킨다.
도 1은 종래의 메모리 시스템의 블록도.
도 2는 본 발명의 일 실시예에 의한 메모리 시스템의 블록도.
도 3은 도 2의 메모리 시스템의 읽기/쓰기 처리 동작을 나타내는 순서도.
도 4는 도 2의 메모리 버퍼의 일 예를 나타내는 블록도.
도 5는 도 4의 뱅크에 할당된 엔트리를 나타내는 설명도.
도 6, 7은 메모리 모듈과 메모리 버퍼 사이의 주소 변환 동작을 설명하는 설명도.
도 8은 본 발명의 효과를 설명하는 설명도.
도 2는 본 발명의 일 실시예에 의한 메모리 시스템의 블록도.
도 3은 도 2의 메모리 시스템의 읽기/쓰기 처리 동작을 나타내는 순서도.
도 4는 도 2의 메모리 버퍼의 일 예를 나타내는 블록도.
도 5는 도 4의 뱅크에 할당된 엔트리를 나타내는 설명도.
도 6, 7은 메모리 모듈과 메모리 버퍼 사이의 주소 변환 동작을 설명하는 설명도.
도 8은 본 발명의 효과를 설명하는 설명도.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 개시한다.
도 2는 본 발명의 일 실시예에 의한 메모리 시스템의 블록도이다.
본 발명에 의한 메모리 시스템은 메모리 컨트롤러(200), 메모리 버퍼(100) 및 메모리 모듈(310 - 340)을 포함한다.
다수의 메모리 모듈(310 - 340)은 하나의 메모리 공간(300)에 포함되며 제 1 주소를 통해 전체 메모리 모듈(310 - 340)의 저장 공간에 접근할 수 있다.
즉 제 1 주소는 메모리 모듈(310 ~ 340)에 포함된 전체 메모리 셀 중 어느 하나의 셀을 지정한다.
메모리 컨트롤러(200)는 호스트의 읽기/쓰기 요청에 따라 제 1 주소를 이용하여 메모리 모듈(310 - 340)에 대한 읽기/쓰기를 제어한다.
본 실시예에서 메모리 모듈(310 - 340) 각각은 SIMM, DIMM 등의 메모리 모듈 구조를 가질 수 있다.
본 실시예에서 제 1 주소는 제 1 랭크 주소, 제 1 뱅크 주소, 제 1 로우 주소, 제 1 칼럼 주소로 구분될 수 있다.
본 실시예에서 메모리 버퍼(100)는 제어부(110)와 레지스터 파일(120)을 포함한다.
본 실시예에서 메모리 버퍼(100)는 다수의 셀 다이와 로직 다이가 적층된 디램 등의 메모리로 구현될 수 있다.
이때 다수의 셀 다이가 레지스터 파일(120), 로직 다이가 제어부(110)에 대응하는 것으로 이해할 수 있다.
예를 들어 HBM(High-Bandwidth Memory)과 같은 메모리를 이용하여 메모리 버퍼(100)를 구현할 수 있다.
제어부(110)는 레지스터 파일(120)의 제 2 주소를 이용하여 레지스터 파일(120)에 대한 읽기/쓰기를 요청한다.
레지스터 파일(120)의 제 2 주소는 메모리 모듈(310 - 340)의 제 1 주소와 매핑된다.
제어부(110)는 제 1 주소와 제 2 주소의 매핑을 연산하는 주소 변환부(111)를 포함한다.
도 1에서 살펴본 바와 같이 종래의 메모리 버퍼는 메모리 모듈마다 대응하는 읽기 FIFO, 쓰기 FIFO가 물리적으로 구별되어 존재한다.
그러나 본 발명에서는 일정한 레지스터 파일(120)의 제 2 주소와 메모리 모듈(310 - 340)의 제 1 주소를 변환하는 방식을 사용하여 전체 레지스터 파일(120)을 전체 메모리 모듈(310 - 340)을 위하여 사용한다.
본 발명에서 주소 변환부(111)는 메모리 모듈(310 ~ 340)에서 동시에 액세스 할 수 없는 두 제 1 주소가 레지스터 파일(120)에서 동시에 액세스할 수 있는 두 제 2 주소로 매핑되도록 한다.
예를 들어 메모리 모듈이 디램 칩으로 구성되는 경우 제 1 랭크 주소와 제 1 뱅크 주소가 동일한 두 제 1 주소는 메모리 모듈에서 동시에 접근할 수 없으며 전술한 바와 같이 "로우 액티브 -> 읽기/쓰기 -> 로우 프리차지" 동작을 순차적으로 진행해야 한다.
이 경우 1개의 랭크 주소와 1개의 뱅크 주소의 조합은 하나의 인터리빙 유닛에 대응한다.
주소 변환부(111)는 제 1 랭크 주소와 제 1 뱅크 주소가 동일한 두 제 1 주소를 레지스터 파일(120)에서 동시에 액세스할 수 있는 두 제 2 주소로 변환한다.
예를 들어 레지스터 파일(120)이 다수의 뱅크를 포함하는 경우 서로 다른 뱅크에 속한 두 제 2 주소로 변환할 수 있다.
이러한 본 발명의 주소 변환 방식에 대해서는 도 4 이하에서 구체적으로 설명한다.
제어부(110)는 메모리 컨트롤러(200)에서 출력된 메모리 모듈(310 - 340)에 대한 읽기/쓰기 명령을 버퍼링하여 메모리 모듈(310 - 340)에 출력할 수 있다.
제어부(110)는 메모리 컨트롤러(200)에서 출력된 메모리 모듈(310 - 340)에 대한 읽기/쓰기 명령에 대응하여 레지스터 파일(120)에 대한 명령을 생성하여 레지스터 파일(310 - 340)에 출력할 수 있다.
후자의 경우 제어부(110)는 메모리 모듈(310 - 340)에 대한 명령과 레지스터 파일(120)에 대한 명령을 실질적으로 동시에 또는 순차적으로 출력할 수 있다.
예를 들어 메모리 모듈(310 - 340)에 대응하는 엔트리가 레지스터 파일(120)에 존재하는 경우 레지스터 파일(12)에 대한 쓰기 명령과 메모리 모듈(310 - 340)에 대한 쓰기 명령을 동시에 또는 순차적으로 제공하여 동일한 주소에 대한 데이터의 일관성을 유지하도록 할 수 있다.
다른 실시예에서 메모리 컨트롤러(200)는 메모리 모듈(310 - 340)에 대한 명령과 이에 대응하는 레지스터 파일(120)에 대한 명령을 모두 제공할 수 있다.
이때 제어부(110)는 메모리 모듈(310 - 340)에 대한 명령을 버퍼링하여 메모리 모듈(310 - 340)에 제공하거나 레지스터 파일(120)에 대한 명령을 버퍼링하여 레지스터 파일(120)에 제공할 수 있다.
예를 들어 제어부(110)가 메모리 공간(300)에 대한 제 1 주소에 대응하는 제 2 주소의 엔트리가 레지스터 파일(120)에 존재하는 것으로 판단하는 경우 메모리 컨트롤러(200)는 메모리 모듈(310 - 340)에 대한 명령 대신 레지스터 파일(120)에 대한 명령을 선택적으로 제공하거나 두 명령을 모두 제공할 수 있다.
도 3은 도 2의 메모리 시스템의 읽기/쓰기 처리 동작을 나타내는 순서도이다.
메모리 컨트롤러(10)가 호스트로부터의 메모리 공간(30)에 대한 읽기/쓰기 요청을 수신한다(S100).
제어부(110)는 요청된 제 1 주소에 대응하는 엔트리가 레지스터 파일(120)에 존재하는지 확인한다(S110).
엔트리가 존재하는 경우 대응하는 엔트리에 대해서 읽기/쓰기 명령을 제공한다(S120).
이때 읽기/쓰기 명령은 레지스터 파일(120)에 대한 것으로서 전술한 바와 같이 이 명령은 제어부(120)에서 생성될 수도 있고 메모리 컨트롤러(200)에서 생성될 수 있으며 이는 이하에서도 마찬가지이다.
이후 수행된 명령이 쓰기 명령인지 판단한다(S130).
쓰기 명령이 아닌 경우 종료하고, 쓰기 명령인 경우 메모리 모듈(310 - 340)에 쓰기 명령을 출력하여(S140), 메모리 버퍼(100)와 메모리 공간(300) 사이에 데이터의 일관성을 유지하도록 한다.
단계(S110)에서 대응하는 엔트리가 레지스터 파일(120)에 존재하지 않는 것으로 판단하는 경우 읽기 요청인지 판단한다(S200).
읽기 요청인 경우 메모리 모듈(310 - 340)의 제 1 주소에 읽기 명령을 출력하여(S210) 데이터를 읽어온다.
주소 변환부(111)는 메모리 공간(300)의 제 1 주소에 대응하는 레지스터 파일(120)의 제 2 주소를 결정한다(S220).
전술한 바와 같이 주소 변환부(111)는 메모리 공간(300)에서 동시에 접근할 수 없는 두 제 1 주소를 레지스터 파일(120)에서 동시에 접근할 수 있는 두 제 2 주소로 변환한다.
이에 대해서는 이하에서 다시 구체적으로 개시한다.
이후 메모리 모듈(310 - 340)에서 읽은 데이터를 레지스터 파일(120)의 제 2 주소에 쓰는 명령을 출력한다(S230).
이후 읽은 데이터를 메모리 컨트롤러(200)에 출력한다(S240).
이때 전술한 두 단계(S230, S240)는 레이턴시 성능 향상을 위해 교환될 수 있다.
단계(S200)에서 쓰기 요청으로 판단된 경우, 주소 변환부(111)는 메모리 공간(300)의 제 1 주소에 대응하는 레지스터 파일(120)의 제 2 주소를 결정한다(S250).
이후 레지스터 파일(120)의 제 2 주소에 쓰기 명령을 출력한다(S260).
이후 데이터 일관성을 유지하기 위해 메모리 모듈(310 - 340)의 제 1 주소에 쓰기 명령을 출력한다(S270).
이하에서는 메모리 모듈(310 - 340)이 멀티 랭크, 멀티 뱅크를 가지는 디램으로 구현되고 메모리 버퍼(100)가 HBM(High-Bandwidth Memory)으로 구현되는 경우를 예로 들어 제 1 주소와 제 2 주소의 변환에 대해서 개시한다.
도 4는 도 2의 메모리 버퍼로 사용될 수 있는 HBM의 구조를 나타낸 설명도이다.
일반적으로 HBM은 1개의 로직 다이와 4개의 셀 다이를 포함한다.
로직 다이는 도 2의 제어부(110), 4개의 셀 다이는 레지스터 파일(120)에 대응하고 HBM은 메모리 버퍼(100)에 대응한다.
HBM에서 4개의 셀 다이(120) 각각은 독립적으로 접근 가능한 두 개의 채널(121, 122)을 포함하고, 각 채널은 8개의 뱅크(1211, 1221)를 포함한다.
이에 따라 HBM은 총 8개의 채널, 채널당 8개의 뱅크 즉 총 16개의 뱅크를 포함한다.
셀 다이의 개수는 8개로 확장될 수 있는데 이 경우 채널의 개수는 총 8개로 유지되어 뱅크의 개수가 채널당 16개로 확장될 수 있다.
도 5는 메모리 버퍼의 각 뱅크에 엔트리를 할당하는 방법을 나타낸다.
도 5에 도시된 바와 같이 레지스터 파일(120)의 각 뱅크는 전체 인터리빙 유닛의 개수인 32( = (랭크 개수 2) x (랭크당 뱅크 개수 16))에 대응하는 개수의 엔트리를 포함하며 각 엔트리의 크기는 각 인터리빙 유닛의 크기에 대응하는 512 바이트가 된다.
본 실시예에서 레지스터 파일(120)은 총 16개의 뱅크를 포함하므로 메모리 공간(300)의 전체 인터리빙 유닛은 각각 총 16개의 로우 버퍼(엔트리)를 포함하게 된다.
따라서 하나의 뱅크에서 동시에 액세스할 수 있는 로우 주소가 종래에는 1개에 불과했으나 총 16개로 증가하는 셈이다.
이하에서는 도 6과 도 7을 참조하여 채널당 4 기가비트의 HBM을 메모리 버퍼(100)로 사용하고 32 기가바이트의 DDR4 메모리를 메모리 모듈(300)로 사용하는 경우에 있어서 메모리 모듈의 제 1 주소를 레지스터 파일(120)의 제 2 주소로 변환하는 방법을 예시한다.
먼저 메모리 모듈에서 다이 당 비트 수는 8기가비트이고 총 용량은 32 기가바이트이다. 또한 버스트 길이는 8 데이터 폭은 64이며, 총 뱅크의 개수는 16, 칼럼 주소는 10비트, 로우 주소는 17비트를 가진다.
HBM에서 버스트 길이는 4 데이터 폭은 128이다. 또한 총 16개의 뱅크를 가지며, 14 비트의 로우 주소와 7 비트의 칼럼 주소 128비트이다.
이에 따라 페이지 크기는 2 킬로바이트(=칼럼 주소 개수와 데이터 폭의 곱)가 된다.
메모리 공간(300)의 주소 즉 제 1 주소는 도 6과 같이 칼럼 주소(도 6A), 로우 주소(도 6B)를 포함한다.
HBM(100)의 주소 즉 제 2 주소는 도 7과 같이 칼럼 주소(도 7A), 로우 주소(도 7B), 뱅크 주소(도 7C)를 포함한다.
도시된 바와 같이 제 1 주소는 6개의 하위 주소(C2, C1, C0, R2, R1, R0)로 분할될 수 있고, 이들을 조합하여 제 2 주소를 생성할 수 있다.
도 6에 도시된 바와 같이 제 1 주소 중 제 1 로우 주소는 제10 로우 주소(R0), 제 11 로우 주소(R11) 및 제 12 로우 주소(R12)로 구분될 수 있고, 제 1 주소 중 제 1 칼럼 주소는 제 10 칼럼 주소(C0), 제 11 칼럼 주소(C11) 및 제 12 칼럼 주소(C12)로 구분될 수 있다.
먼저 도 7A를 참조하여 제 1 칼럼 주소의 구분에 대해서 개시한다.
먼저 제 1 칼럼 주소 중 최하위 비트들 즉 제 10 칼럼 주소(C0)의 비트 수는 메모리 모듈의 버스트 길이를 비트 수로 표현한 것이다.
그 다음의 하위 비트들 즉 제 11 칼럼 주소(C1)의 비트 수는 HBM(100)의 뱅크 개수에 대응하는 비트 수이다.
나머지 최상위 비트들 즉 제 12 칼럼 주소(C2)의 비트 수는 제 1 칼럼 주소의 비트 수에서 C0, C1의 비트 수를 뺀 값이 된다.
다음으로 도 6B를 참조하여 제 1 로우 주소의 구분에 대해서 개시한다.
먼저 제 1 주소의 로우 주소 중 최하위 비트들 즉 제 10 로우 주소(R0)의 비트 수는 킬로바이트 단위의 HBM 페이지 크기에 대응하는 비트 수에서 버스트 길이와 메모리 모듈의 바이트 단위의 데이터 폭의 곱에 대응하는 비트 수를 빼고 여기서 C0의 비트 수를 뺀 값에 대응한다.
다음으로 제 1 주소의 중위 비트들 즉 제 11 로우 주소(R1)의 비트 수는 HBM(100)의 로우 주소의 개수에 대응하는 비트 수에서 인터리빙 유닛의 개수에 대응하는 비트 수를 뺀 값에 대응한다.
나머지 최상위 비트들 즉 제 12 로우 주소(R2)의 비트 수는 제 1 로우 주소의 비트 수에서 R1, R0의 비트 수를 뺀 값에 대응한다.
이에 따라 C2, C1, C0, R2, R1, R0의 비트 수는 다음과 같이 계산된다.
C0의 비트 수 = log2(8) = 3
C1의 비트 수 = log2(16) = 4
C2의 비트 수 = 10 - 4 - 3 = 3
R0의 비트 수 = log2(2K) - log2(8 * 64/8) - 3 = 11 - 6- 3 = 2
R1의 비트 수 = log2(16K) - log2(16*2) = 14 - 5 = 9
R2의 비트 수 = 17 - 2- 9 = 6
이를 참조하여 제 1 주소로부터 제 2 주소를 생성하는 과정은 다음과 같다.
도 7A와 같이 제 2 주소 중 제 2 칼럼 주소는 최상위에 제 10 로우 주소(R0), 그 다음에 제 12 칼럼 주소(C2), 그 다음에 HBM(100)의 버스트 길이에 대응하는 비트 수(2)로 구성된다.
도 7B와 같이 제 2 주소 중 제 2 로우 주소는 최상위에 제 12 로우 주소(R2)가 배치되고, 그 하위에 인터리빙 유닛을 식별하는 비트들이 배치된다.
다음으로 제 2 주소 중 제 2 뱅크 주소는 C1의 값에 대응한다.
이에 따라 제 2 칼럼 주소의 비트 수는 2 + 3 + 2 = 7, 제 2 로우 주소의 비트 수는 = 6 + log2(16 * 2) = 11, 제 2 뱅크 주소의 비트 수는 4가 된다.
제 2 로우 주소의 비트 수는 11로서 이는 HBM의 로우 비트 수 14보다 작다.
이는 전술한 HBM이 제공하는 용량 범위 내에서 제 2 로우 주소를 할당할 수 있음을 의미한다.
HBM의 스펙이 고정된 경우 HBM에서 동시에 접근할 수 있는 주소 세트의 개수가 고정되므로 인터리빙 유닛의 개수와 인터리빙 유닛마다 할당될 수 있는 로우 버퍼의 개수는 서로 역의 관계에 있음을 추정할 수 있다.
보다 구체적으로 도 6B와 도 7B를 참조하면 인터리빙 유닛의 개수가 증가하면 R1이 감소하므로 제 2 로우 주소의 비트 수는 감소하고, 인터리빙 유닛의 개수가 감소하면 제 2 로우 주소의 비트 수는 증가함을 알 수 있어 위의 추정이 성립함을 확인할 수 있다.
도 6 및 도 7의 관계를 보다 구체적으로 살펴보면 다음과 같다.
도 7A에서 제 2 칼럼 주소의 비트 수는 다음 수학식 1과 같이 표현된다.
도 6B를 참조하면 제 2 칼럼 주소의 비트 수는 다음 수학식 2와 같이 표현된다.
HBM의 페이지 크기는 HBM의 칼럼 비트 수와 HBM의 데이터 폭의 곱으로 주어진다.
따라서 도 7A의 제 2 칼럼 주소의 비트 수는 수학식 3 같이 표현될 수 있다.
수학식 3에서 액세스에 따른 데이터의 크기가 동일해야 하므로 log2(HBM의 데이터 폭 x HBM의 버스트 길이)의 값과 log2(메모리 모듈의 버스트 길이 x 모듈의 데이터 폭(B))의 값은 동일해야 한다.
따라서 수학식 4가 성립한다.
수학식 4를 통해 도 6과 7에 의해 주소 변환을 수행하는 경우 제 2 칼럼 주소의 비트 수는 HBM의 칼럼 비트 수와 동일해짐을 알 수 있다.
도 7B에서 제 2 로우 주소의 비트 수는 다음 수학식 5와 같이 표현된다.
도 7B에서 제 2 로우 주소의 비트 수는 HBM의 로우 비트 수 이하가 되어야 한다. 여기에 수학식 5를 적용하면 수학식 6의 조건이 만족되어야 한다.
도 6B를 참조하면 수학식 7, 8이 성립한다.
수학식 6, 7, 8에서 수학식 9가 성립한다.
제 2 로우 주소의 비트 수는 HBM의 로우 비트수 이하여야 하므로 수학식 9의 좌변의 값이 제 2 로우 주소의 비트 수가 되도록 설계하는 것이 가능하다.
수학식 9를 참조하면 도 6, 7에서 예시한 규칙으로 설계하는 경우 제 2 로우 주소의 비트 수는 HBM이나 메모리 모듈의 스펙, 특히 메모리 모듈의 로우 비트 수나 인터리빙 유닛의 개수에 의존함을 알 수 있다.
이하에서는 도 8을 참조하여 본 발명의 메모리 버퍼(100)에 의해 로우 버퍼의 개수가 증가하는 경우와 종래의 경우(로우 버퍼가 1개인 경우)의 성능 차이를 설명한다.
먼저 메모리 공간에 대한 다음과 같은 읽기 액세스가 100회 반복되는 것을 가정한다.
"뱅크0, 로우 1 -> 뱅크 0, 로우 2 -> 뱅크 9, 로우 3"
도 8A와 같이 종래에는 매번 로우 미스가 발생하는데 비하여 도 8B와 같이 본 발명에서는 2회째부터는 계속 히트가 발생한다.
따라서 본 발명에서는 2회째부터 메모리 모듈 대신에 레지스터 파일에 대한 액세스만으로 충분하다.
즉, 2회째의 레지스터 파일에 대한 액세스 과정에서는 로우 액티브(tRAS), 로우 프리차지(tRP)를 반복할 필요없이 로우 액티브(tRRD)만으로 충분하다
이 경우 tRRD는 일반적으로 5ns tRAS와 tRP의 합은 50ns 정도이므로 본 발명의 경우에 있어서 레이턴시 감소 효과는 명확하다.
레지스터 파일에 대하여 로우 히트 여부를 판단하는 과정에서 걸리는 시간(tL)을 약 10n 정도로 가정하고 tRCD = 15ns, CL = 15ns로 가정하면 다음과 같이 본 발명의 성능 개선 효과는 약 3.22배가 된다.
(종래의 경우 전체 레이턴시) = 3 *(tRAS + tRP) * 99 + 2 * (tRAS + tRP) + tRCE + tCL ~ 14.98us
(본 발명의 경우 전체 레이턴시) = 3 * (tRAS + tRP + tL) + 99 * 3(tRRD + tL) + CL ~ 4.65us
이상은 발명의 실시예를 개시하는 것이므로 이에 의해서 발명의 권리범위가 한정되는 것으로 해석되어서는 안된다. 본 발명의 권리범위는 이하에 기술된 특허 청구범위에 문언적으로 기재된 범위와 그 균등범위에 의해서 결정된다.
10, 100: 메모리 버퍼
11 - 14: 읽기 FIFO
15 - 18: 쓰기 FIFO
110: 제어부
111: 주소 변환부
120: 레지스터 파일
121, 122: 채널
1211, 1221: 뱅크
20, 200: 메모리 컨트롤러
30, 300: 메모리 공간
31 - 34: 메모리 모듈
310 - 340: 메모리 모듈
11 - 14: 읽기 FIFO
15 - 18: 쓰기 FIFO
110: 제어부
111: 주소 변환부
120: 레지스터 파일
121, 122: 채널
1211, 1221: 뱅크
20, 200: 메모리 컨트롤러
30, 300: 메모리 공간
31 - 34: 메모리 모듈
310 - 340: 메모리 모듈
Claims (13)
- 제 1 주소에 의해 액세스 되는 메모리 모듈;
호스트 요청에 따라 상기 메모리 모듈에 대한 읽기 또는 쓰기 명령을 제공하는 메모리 컨트롤러; 및
상기 제 1 주소를 변환한 제 2 주소에 의해 액세스 되며 상기 메모리 모듈의 인터리빙 유닛에 대응하는 적어도 둘 이상의 엔트리 공간을 포함하는 레지스터 파일을 포함하되, 상기 둘 이상의 엔트리 공간은 동시에 접근 가능한 서로 다른 주소 영역에 위치하는 메모리 버퍼
를 포함하는 메모리 시스템. - ◈청구항 2은(는) 설정등록료 납부시 포기되었습니다.◈청구항 1에 있어서, 상기 메모리 버퍼는 상기 제 1 주소를 상기 제 2 주소로 변환하여 상기 제 2 주소에 따라 상기 레지스터 파일에 대한 읽기 또는 쓰기를 제어하는 제어부를 포함하는 메모리 시스템
- ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈청구항 2에 있어서, 상기 제어부는 상기 제 1 주소를 상기 제 2 주소로 변환하는 주소 변환부를 더 포함하는 메모리 시스템.
- ◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈청구항 2에 있어서, 상기 제어부는 상기 제 1 주소에 대응하는 제 2 주소가 상기 레지스터 파일에 존재하는 경우 상기 레지스터 파일에 대하여 상기 읽기 또는 쓰기 명령을 수행하는 메모리 시스템.
- ◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈청구항 4에 있어서, 상기 제어부는 상기 레지스터 파일에 대하여 상기 쓰기 명령을 수행한 경우 상기 제 1 주소의 상기 메모리 모듈에 쓰기 명령을 더 수행하는 메모리 시스템.
- ◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈청구항 2에 있어서, 상기 제어부는 상기 제 1 주소에 대응하는 제 2 주소가 상기 레지스터 파일에 존재하지 않는 경우 상기 제 1 주소에 대응하는 상기 둘 이상의 엔트리 공간 중 하나의 주소를 상기 제 2 주소로 변환하는 메모리 시스템.
- ◈청구항 7은(는) 설정등록료 납부시 포기되었습니다.◈청구항 6에 있어서, 상기 제 1 주소에 대한 명령이 읽기 명령인 경우 상기 제어부는 상기 메모리 모듈에 읽기 명령을 제공하고, 상기 메모리 모듈에서 읽은 데이터를 상기 레지스터 파일의 제 2 주소에 쓰는 명령을 제공하는 메모리 시스템.
- ◈청구항 8은(는) 설정등록료 납부시 포기되었습니다.◈청구항 7에 있어서, 상기 제어부는 상기 메모리 모듈에서 읽은 데이터를 상기 메모리 컨트롤러에 출력하는 메모리 시스템.
- ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈청구항 6에 있어서, 상기 제 1 주소에 대한 명령이 쓰기 명령인 경우 상기 제어부는 상기 메모리 모듈의 제 1 주소에 대해서 쓰기 명령을 제공하고, 레지스터 파일의 제 2 주소에 쓰기 명령을 제공하는 메모리 시스템.
- ◈청구항 10은(는) 설정등록료 납부시 포기되었습니다.◈청구항 1에 있어서, 상기 메모리 모듈은 제 1 디램 메모리 모듈이고 상기 메모리 버퍼는 제 2 디램인 메모리 시스템.
- ◈청구항 11은(는) 설정등록료 납부시 포기되었습니다.◈청구항 10에 있어서, 상기 제 1 디램 메모리 모듈은 M(자연수)개의 랭크와 랭크 당 N(자연수) 개의 뱅크를 포함하며 상기 인터리빙 유닛의 개수는 M x N인 메모리 시스템.
- ◈청구항 12은(는) 설정등록료 납부시 포기되었습니다.◈청구항 11에 있어서, 상기 제 2 디램은 독립적으로 액세스 가능한 다수의 뱅크를 포함하되, 상기 다수의 뱅크 각각은 상기 인터리빙 유닛의 개수에 대응하는 다수의 엔트리 공간을 포함하는 메모리 시스템
- ◈청구항 13은(는) 설정등록료 납부시 포기되었습니다.◈청구항 10에 있어서, 상기 메모리 모듈은 DDR 메모리 모듈이고, 상기 제 2 디램은 HBM(High-Bandwidth Memory)인 메모리 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160087258A KR102623702B1 (ko) | 2016-07-11 | 2016-07-11 | 메모리 버퍼를 포함하는 메모리 시스템 |
US15/296,216 US9696941B1 (en) | 2016-07-11 | 2016-10-18 | Memory system including memory buffer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160087258A KR102623702B1 (ko) | 2016-07-11 | 2016-07-11 | 메모리 버퍼를 포함하는 메모리 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180006645A KR20180006645A (ko) | 2018-01-19 |
KR102623702B1 true KR102623702B1 (ko) | 2024-01-11 |
Family
ID=59152349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160087258A KR102623702B1 (ko) | 2016-07-11 | 2016-07-11 | 메모리 버퍼를 포함하는 메모리 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9696941B1 (ko) |
KR (1) | KR102623702B1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180049386A (ko) * | 2016-11-01 | 2018-05-11 | 에스케이하이닉스 주식회사 | 랭크 레벨에서 병렬화를 지원하는 메모리 장치 및 메모리 시스템 |
US11232037B2 (en) * | 2017-10-23 | 2022-01-25 | Seagate Technology Llc | Using a first-in-first-out (FIFO) wraparound address lookup table (ALT) to manage cached data |
KR102583448B1 (ko) * | 2018-04-10 | 2023-09-27 | 에스케이하이닉스 주식회사 | 온도 관리를 위해 주소를 제어하는 반도체 메모리 장치 |
KR20200109973A (ko) * | 2019-03-15 | 2020-09-23 | 에스케이하이닉스 주식회사 | 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템 |
CN116472520A (zh) * | 2021-01-30 | 2023-07-21 | 华为技术有限公司 | 一种访问内存的方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040264286A1 (en) * | 2003-06-12 | 2004-12-30 | Ware Frederick A. | Apparatus and method including a memory device having multiple sets of memory banks with duplicated data emulating a fast access time, fixed latency memory device |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080183959A1 (en) | 2007-01-29 | 2008-07-31 | Pelley Perry H | Memory system having global buffered control for memory modules |
KR102133573B1 (ko) * | 2013-02-26 | 2020-07-21 | 삼성전자주식회사 | 반도체 메모리 및 반도체 메모리를 포함하는 메모리 시스템 |
CN104123234B (zh) | 2013-04-27 | 2017-04-05 | 华为技术有限公司 | 内存访问方法及内存系统 |
-
2016
- 2016-07-11 KR KR1020160087258A patent/KR102623702B1/ko active IP Right Grant
- 2016-10-18 US US15/296,216 patent/US9696941B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040264286A1 (en) * | 2003-06-12 | 2004-12-30 | Ware Frederick A. | Apparatus and method including a memory device having multiple sets of memory banks with duplicated data emulating a fast access time, fixed latency memory device |
Also Published As
Publication number | Publication date |
---|---|
KR20180006645A (ko) | 2018-01-19 |
US9696941B1 (en) | 2017-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102623702B1 (ko) | 메모리 버퍼를 포함하는 메모리 시스템 | |
US11687454B2 (en) | Memory circuit and cache circuit configuration | |
US10095436B2 (en) | Cache memory device and data processing method of the device | |
KR102130578B1 (ko) | 반도체 장치 | |
US10007446B2 (en) | Method, apparatus, and storage medium for writing data into persistent storage device | |
US8219746B2 (en) | Memory package utilizing at least two types of memories | |
US7310698B2 (en) | Method and apparatus for extending memory addressing | |
US20140258606A1 (en) | Storage control device, storage device, information processing system, and storage control method | |
CN1714401A (zh) | 对二维访问优化的sdram地址映射 | |
US20160313923A1 (en) | Method for accessing multi-port memory module and associated memory controller | |
US20140143508A1 (en) | Memory system and operating method thereof | |
CN102541769A (zh) | 一种存储器接口访问控制方法及装置 | |
US6512683B2 (en) | System and method for increasing the speed of memories | |
US6819323B2 (en) | Structure and method for gaining fast access to pixel data to store graphic image data in memory | |
US7586779B2 (en) | Controller apparatus for utilizing downgrade memory and method for operating the same | |
JP2006215961A (ja) | アドレシング方法 | |
TWI721660B (zh) | 控制資料讀寫裝置與方法 | |
US10929949B2 (en) | Accessing a memory configured to store an image data cube | |
US8553477B2 (en) | Data interface circuit, nonvolatile memory device including the same and operating method thereof | |
CN110364192B (zh) | 用于针对温度管理控制地址的半导体存储器件 | |
US8499115B2 (en) | Control method, memory, and processing system utilizing the same | |
CN117594085A (zh) | 半导体存储器件及设计其的方法 | |
CN113539322A (zh) | 包括多个区域的存储器件、存储器控制器以及存储系统 | |
KR20160110690A (ko) | 디램 메모리 어드레스 맵핑 방법 및 그 방법을 이용하는 메모리 시스템 | |
JP2011060201A (ja) | メモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |