KR20180006645A - 메모리 버퍼를 포함하는 메모리 시스템 - Google Patents

메모리 버퍼를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20180006645A
KR20180006645A KR1020160087258A KR20160087258A KR20180006645A KR 20180006645 A KR20180006645 A KR 20180006645A KR 1020160087258 A KR1020160087258 A KR 1020160087258A KR 20160087258 A KR20160087258 A KR 20160087258A KR 20180006645 A KR20180006645 A KR 20180006645A
Authority
KR
South Korea
Prior art keywords
address
memory
memory module
register file
memory system
Prior art date
Application number
KR1020160087258A
Other languages
English (en)
Other versions
KR102623702B1 (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 에스케이하이닉스 주식회사
Priority to KR1020160087258A priority Critical patent/KR102623702B1/ko
Priority to US15/296,216 priority patent/US9696941B1/en
Publication of KR20180006645A publication Critical patent/KR20180006645A/ko
Application granted granted Critical
Publication of KR102623702B1 publication Critical patent/KR102623702B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/1673Details of memory controller using buffers
    • 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/061Improving I/O performance
    • 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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1045Read-write mode select circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2209Concurrent read and write
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2245Memory devices with an internal cache buffer
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1042Read-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

메모리 버퍼를 포함하는 메모리 시스템{SEMICONDUCTOR DEVICE INCLUDING A MEMORY BUFFER}
본 발명은 메모리 버퍼를 포함하는 메모리 시스템에 관한 것으로서, 보다 구체적으로는 메모리 모듈에 대한 데이터 읽기/쓰기에 있어서 발생할 수 있는 성능 저하 현상을 방지할 수 있는 메모리 버퍼를 포함하는 메모리 시스템에 관한 것이다.
도 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)에서 데이터를 읽고 쓰는데 있어서 발생할 수 있는 성능 저하를 줄일 수 있는 새로운 메모리 버퍼를 포함하는 메모리 시스템이 요구되고 있다.
US 2008-0183959 A1 KR 10-2016-0004346 A
본 발명은 메모리 모듈에 대한 읽기 또는 쓰기 동작 시 성능 저하를 방지할 수 있는 메모리 버퍼를 포함하는 메모리 시스템을 제공한다.
본 발명의 일 실시예에 의한 메모리 시스템은 제 1 주소에 의해 액세스되는 메모리 모듈; 호스트 요청에 따라 상기 메모리 모듈에 대한 읽기 또는 쓰기 명령을 제공하는 메모리 컨트롤러; 제 2 주소에 의해 액세스되는 메모리 버퍼를 포함하되, 상기 메모리 버퍼는 상기 메모리 모듈의 인터리빙 유닛에 대응하는 적어도 둘 이상의 엔트리 공간을 포함하는 레지스터 파일을 포함하되, 상기 둘 이상의 엔트리 공간은 동시에 접근 가능한 서로 다른 주소 영역에 위치한다.
본 발명은 메모리 버퍼를 어드레싱 가능한 레지스터 파일을 포함하도록 구성하고 메모리 모듈에 대한 주소와 레지스터 파일에 대한 주소 사이의 주소 변환을 통해 메모리 모듈에 대한 읽기 및 쓰기 동작 시 발생할 수 있는 성능 저하를 방지하여 메모리 시스템의 성능을 향상시킨다.
도 1은 종래의 메모리 시스템의 블록도.
도 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과 같이 표현된다.
Figure pat00001
도 6B를 참조하면 제 2 칼럼 주소의 비트 수는 다음 수학식 2와 같이 표현된다.
Figure pat00002
HBM의 페이지 크기는 HBM의 칼럼 비트 수와 HBM의 데이터 폭의 곱으로 주어진다.
따라서 도 7A의 제 2 칼럼 주소의 비트 수는 수학식 3 같이 표현될 수 있다.
Figure pat00003
수학식 3에서 액세스에 따른 데이터의 크기가 동일해야 하므로 log2(HBM의 데이터 폭 x HBM의 버스트 길이)의 값과 log2(메모리 모듈의 버스트 길이 x 모듈의 데이터 폭(B))의 값은 동일해야 한다.
따라서 수학식 4가 성립한다.
Figure pat00004
수학식 4를 통해 도 6과 7에 의해 주소 변환을 수행하는 경우 제 2 칼럼 주소의 비트 수는 HBM의 칼럼 비트 수와 동일해짐을 알 수 있다.
도 7B에서 제 2 로우 주소의 비트 수는 다음 수학식 5와 같이 표현된다.
Figure pat00005
도 7B에서 제 2 로우 주소의 비트 수는 HBM의 로우 비트 수 이하가 되어야 한다. 여기에 수학식 5를 적용하면 수학식 6의 조건이 만족되어야 한다.
Figure pat00006
도 6B를 참조하면 수학식 7, 8이 성립한다.
Figure pat00007
Figure pat00008
수학식 6, 7, 8에서 수학식 9가 성립한다.
Figure pat00009
제 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: 메모리 모듈

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)인 메모리 시스템.
KR1020160087258A 2016-07-11 2016-07-11 메모리 버퍼를 포함하는 메모리 시스템 KR102623702B1 (ko)

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 true KR20180006645A (ko) 2018-01-19
KR102623702B1 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190118283A (ko) * 2018-04-10 2019-10-18 에스케이하이닉스 주식회사 온도 관리를 위해 주소를 제어하는 반도체 메모리 장치

Families Citing this family (4)

* Cited by examiner, † Cited by third party
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
KR20200109973A (ko) * 2019-03-15 2020-09-23 에스케이하이닉스 주식회사 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템
CN116472520A (zh) * 2021-01-30 2023-07-21 华为技术有限公司 一种访问内存的方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
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
US20080183959A1 (en) 2007-01-29 2008-07-31 Pelley Perry H Memory system having global buffered control for memory modules
KR20140106227A (ko) * 2013-02-26 2014-09-03 삼성전자주식회사 반도체 메모리 및 반도체 메모리를 포함하는 메모리 시스템
KR20160004346A (ko) 2013-04-27 2016-01-12 후아웨이 테크놀러지 컴퍼니 리미티드 메모리 액세스 방법 및 메모리 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
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
US20080183959A1 (en) 2007-01-29 2008-07-31 Pelley Perry H Memory system having global buffered control for memory modules
KR20140106227A (ko) * 2013-02-26 2014-09-03 삼성전자주식회사 반도체 메모리 및 반도체 메모리를 포함하는 메모리 시스템
KR20160004346A (ko) 2013-04-27 2016-01-12 후아웨이 테크놀러지 컴퍼니 리미티드 메모리 액세스 방법 및 메모리 시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190118283A (ko) * 2018-04-10 2019-10-18 에스케이하이닉스 주식회사 온도 관리를 위해 주소를 제어하는 반도체 메모리 장치

Also Published As

Publication number Publication date
KR102623702B1 (ko) 2024-01-11
US9696941B1 (en) 2017-07-04

Similar Documents

Publication Publication Date Title
US20190348107A1 (en) Refresh control circuit, memory device including the same and method of operating the same for hammer refresh operation
KR102623702B1 (ko) 메모리 버퍼를 포함하는 메모리 시스템
US7805587B1 (en) Memory addressing controlled by PTE fields
KR100385370B1 (ko) 개선된 메모리 시스템 장치 및 방법
JP5231642B2 (ja) メモリモジュール内の独立制御式仮想メモリ装置
US20120236643A1 (en) Interleaved flash storage system and method
US8006026B2 (en) Multi-port memory and computer system provided with the same
US10998015B2 (en) Semiconductor storage device
CN108139989B (zh) 配备有存储器中的处理和窄访问端口的计算机设备
US7310698B2 (en) Method and apparatus for extending memory addressing
US20160313923A1 (en) Method for accessing multi-port memory module and associated memory controller
US11842266B2 (en) Processing-in-memory (PIM) device, controller for controlling the PIM device, and PIM system including the PIM device and the controller
CN102541769A (zh) 一种存储器接口访问控制方法及装置
JP7008410B2 (ja) メモリコントローラおよび方法
US11894096B2 (en) Memory systems for high speed scheduling
US7327617B2 (en) Memory address generating circuit and memory controller using the same
WO2022160321A1 (zh) 一种访问内存的方法和装置
US7586779B2 (en) Controller apparatus for utilizing downgrade memory and method for operating the same
JP2006215961A (ja) アドレシング方法
US6433786B1 (en) Memory architecture for video graphics environment
TWI721660B (zh) 控制資料讀寫裝置與方法
JP7516087B2 (ja) イメージデータキューブを格納するように構成されたメモリのアクセス
US20240272825A1 (en) Memory storing meta data and operation method of memory
US10929300B2 (en) Semiconductor memory device for controlling an address for temperature management
US20240177746A1 (en) Address decoding method, and memory controller and semiconductor memory system using the same

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