KR102258360B1 - 메모리 리프레시 기술 및 컴퓨터 시스템 - Google Patents

메모리 리프레시 기술 및 컴퓨터 시스템 Download PDF

Info

Publication number
KR102258360B1
KR102258360B1 KR1020197030437A KR20197030437A KR102258360B1 KR 102258360 B1 KR102258360 B1 KR 102258360B1 KR 1020197030437 A KR1020197030437 A KR 1020197030437A KR 20197030437 A KR20197030437 A KR 20197030437A KR 102258360 B1 KR102258360 B1 KR 102258360B1
Authority
KR
South Korea
Prior art keywords
rank
refresh
threshold
access requests
memory controller
Prior art date
Application number
KR1020197030437A
Other languages
English (en)
Other versions
KR20190126888A (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 KR20190126888A publication Critical patent/KR20190126888A/ko
Application granted granted Critical
Publication of KR102258360B1 publication Critical patent/KR102258360B1/ko

Links

Images

Classifications

    • 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/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40618Refresh operations over multiple banks or interleaving
    • 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/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40611External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1636Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using refresh
    • 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/406Management or control of the refreshing or charge-regeneration cycles

Abstract

본 출원은 메모리 리프레시 기술 및 컴퓨터 시스템을 제공한다. 메모리 리프레시 기술은 메모리 제어기 및 동적 랜덤 액세스 메모리 DRAM을 포함하는 컴퓨터 시스템에 적용된다. 메모리 리프레시 기술에 따르면, 메모리 제어기는 액세스 요청들을 수신한다. 수신된 액세스 요청들에 있는 DRAM 내의 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 0보다 크고 제2 임계값보다 작을 때, 메모리 제어기는 제1 랭크를 리프레시한다. 본 출원에서 제공된 메모리 리프레시 기술에 따르면, 제1 랭크가 유휴 상태에 있을 수 없더라도 제1 랭크는 적시에 리프레시될 수 있다. 따라서, 리프레시 연기들에 의해 야기되는 수동 리프레시들의 증가에 의해 컴퓨터 시스템 성능에 야기되는 충격이 완화되고, 메모리 리프레시 융통성이 개선되고, 리프레시 오버헤드들이 감소된다.

Description

메모리 리프레시 기술 및 컴퓨터 시스템
본 출원은 컴퓨터 기술 분야에 관한 것이고, 특히, 메모리 리프레시 기술 및 컴퓨터 시스템에 관한 것이다.
시스템의 종래의 메인 메모리는 일반적으로 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM)를 포함한다. DRAM은 간단한 구조 및 높은 판독 속도를 갖는다. DRAM의 가장 기본적인 저장 유닛은 DRAM 셀이고, 각각의 DRAM 셀은 트랜지스터 및 커패시터를 포함한다. DRAM 셀은 커패시터에서의 전하들의 수량을 사용함으로써 0 또는 1을 나타낸다. 이러한 방식으로, 하나의 DRAM 셀은 하나의 비트(bit)를 저장할 수 있다. 커패시터 내의 전하들은 누설될 수 있고, 커패시터 내의 불충분한 전하들은 저장된 데이터 내의 에러를 야기할 수 있다. 따라서, 실제 응용 동안, 커패시터는 커패시터에 저장된 정보를 유지하기 위해 주기적으로 충전될 필요가 있다. DRAM에서 커패시터를 충전하는 이러한 액션은 리프레시로서 지칭된다.
DRAM 내의 DRAM 셀들은 행렬로 배열된다. 이 행렬은 DRAM 뱅크로서 지칭된다. DRAM 뱅크 내의 임의의 비트는 대응하는 행 및 열 디코더를 사용하여 포지셔닝될 수 있다. 복수의 DRAM 뱅크는 DRAM 칩을 형성할 수 있고, 복수의 DRAM 칩은 DRAM 랭크를 형성할 수 있고, 복수의 DRAM 랭크는 듀얼 인-라인 메모리 모듈(Dual In-line Memory Modules, DIMM)에 통합될 수 있다. DRAM 셀들은 행 단위로 감지 증폭기(Sense Amp)에 의해 리프레시된다. 리프레시 프로세스에서, 하나 이상의 뱅크에서의 행들은 리프레시 커맨드에 따라 리프레시될 수 있다. 실제 응용 동안, 리프레시는 통상적으로 랭크를 단위로써 사용함으로써 수행된다. 구체적으로, 랭크 내의 모든 뱅크의 행들은 보유 시간(retention time) 내에서 적어도 한 번 리프레시될 필요가 있다. 보유 시간은 DRAM 셀 내의 데이터가 리프레시 동작 없이 유지될 수 있는 시간이다.
본 기술분야의 통상의 기술자는 메모리 제어기가, tREFI 시간의 간격으로, 랭크가 리프레시될 필요가 있는지를 체크하는 것을 알 수 있다. 각각의 리프레시는 tRFC 시간을 소비할 필요가 있다. tREFI는 평균 리프레시 간격(average refresh interval)을 나타내기 위해 사용되고, tRFC는 행 리프레시 사이클 시간(Refresh Cycle Time)을 나타내기 위해 사용된다. 다시 말해서, tREFI는 메모리 제어기가 리프레시 커맨드를 전송하는 평균 간격을 나타내기 위해 사용되고, tRFC는 DRAM 랭크에서 하나의 리프레시 커맨드를 실행하기 위해 요구되는 시간을 나타내기 위해 사용된다. 종래 기술의 리프레시 해결책에서, 랭크가 유휴일 때, 메모리 제어기는 랭크를 리프레시하거나; 랭크가 유휴 상태가 아닐 때, 메모리 제어기는 랭크를 리프레시하는 것을 연기한다. 연기 시간이 임계값을 초과할 때, 메모리 제어기는 강제적으로 랭크를 리프레시하고, 연기된 리프레시에 대한 메이크-업 리프레시를 수행한다. 따라서, 비교적 많은 수량의 리프레시가 메이크-업 리프레시를 필요로 하는 시간 기간 내에 야기된다. 리프레시 프로세스에서, tRFC의 그러한 시간 윈도우 내에서, 리프레시되는 랭크는 다른 동작 요청에 응답할 수 없다. 따라서, 그러한 강제적인 메이크-업 리프레시는 시스템의 비교적 높은 리프레시 오버헤드들을 초래할 수 있다.
본 출원은 시스템의 리프레시 손실을 감소시키고, 리프레시 프로세스에서 컴퓨터 시스템 성능을 개선하기 위해, 메모리 리프레시 기술 및 컴퓨터 시스템을 제공한다.
제1 양태에 따르면, 본 발명의 실시예는 메모리 리프레시 방법을 제공한다. 방법은 메모리 제어기 및 동적 랜덤 액세스 메모리 DRAM을 포함하는 컴퓨터 시스템에 적용된다. 이 방법에서는, 메모리 제어기가 액세스 요청들을 수신한다. 수신된 액세스 요청들에 있는 DRAM 내의 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 0보다 크고 제2 임계값보다 작을 때, 메모리 제어기는 제1 랭크를 리프레시한다.
본 발명의 이 실시예에서의 메모리 리프레시 방법에서, 메모리 리프레시 프로세스에 의해 컴퓨터 시스템 성능에 야기되는 영향을 완화시키기 위해, 수신된 액세스 요청들의 스테이터스 및 액세스될 타겟 랭크의 스테이터스 양자 모두는 타겟 랭크가 리프레시될 필요가 있는지를 결정하기 위해 포괄적으로 고려된다. 구체적으로, 수신된 액세스 요청들에 있는 DRAM 내의 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 0보다 크고 제2 임계값보다 작을 때, 메모리 제어기는 제1 랭크를 리프레시할 수 있다. 이러한 방식으로, 제1 랭크가 유휴 상태에 있지 않더라도 제1 랭크는 능동적으로 리프레시될 수 있다. 따라서, 액세스 트래픽이 비교적 클 때, 제1 랭크가 유휴 상태에 있을 수 없더라도 제1 랭크는 적시에 리프레시될 수 있다. 리프레시 연기에 의해 야기되는 수동 리프레시에 의해 컴퓨터 시스템 성능에 야기되는 충격이 완화되고, 메모리 리프레시 융통성이 개선된다. 따라서, 시스템 성능이 개선될 수 있고, 리프레시 오버헤드들이 감소될 수 있다.
제1 가능한 구현에서, 메모리 제어기에 의해, 제1 랭크를 리프레시하는 것은 다음을 포함한다: 메모리 제어기에 의해, 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작고 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 클 때 T/N 간격으로 제1 랭크를 리프레시하는 것- T는 표준 평균 리프레시 간격을 나타내기 위해 사용되고, N은 1보다 큰 정수임 -.
본 발명의 이러한 실시예에서, 메모리 리프레시 프로세스에서, 액세스 요청들의 액세스될 타겟 랭크들의 분포 및 액세스 요청들에서의 판독 또는 기입 비율에 기초하여 리프레시 모드가 추가로 선택될 수 있다. 구체적으로, 액세스될 타겟 랭크들이 비교적 집중되고 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 비교적 클 때, 단일 리프레시들 간의 간격이 감소될 수 있는데, 즉, 제1 랭크가 더 높은 리프레시 주파수에서 리프레시된다. 평균 리프레시 간격이 비교적 짧고 단일 리프레시에 필요한 시간이 또한 비교적 짧기 때문에, 단일 리프레시 프로세스에서, 시스템은 tFAW 제한에 의해 덜 영향을 받고, 전체 시스템 성능은 덜 낮춘다. 이러한 방식으로, DDR 프로토콜에서의 tFAW 제한에 의한 리프레시 프로세스에서의 시스템에서 야기되는 영향이 완화될 수 있고, 시스템 성능이 개선될 수 있다.
제1 양태 및 제1 양태의 제1 가능한 구현을 참조하여, 제2 가능한 구현에서, 메모리 제어기가 제1 랭크를 리프레시하는 프로세스에서, 메모리 제어기는 제1 랭크에 액세스하기 위한 제1 액세스 요청을 수신하고, 그 후 메모리 제어기는 구성된 버퍼 큐에 제1 액세스 요청을 버퍼링한다. 메모리 제어기는 적어도 버퍼 큐 및 스케줄링 큐를 포함하고, 버퍼 큐는 리프레시 동작이 수행되고 있는 랭크에 대한 액세스 요청을 버퍼링하기 위해 사용되고, 스케줄링 큐는 리프레시 동작이 수행되고 있지 않은 랭크에 전송될 액세스 요청을 버퍼링하기 위해 사용된다. 이러한 방식으로, 제1 랭크에 대한, 제1 랭크를 리프레시하는 프로세스에서 수신된 액세스 요청은, 스케줄링 큐를 정체시키고 메모리 제어기에 의해, 다른 랭크에 대한 액세스 요청에 대한 처리에 영향을 주는 것이 방지될 수 있다. 전체 컴퓨터 시스템의 처리 효율이 추가로 개선된다.
제1 양태의 제2 가능한 구현을 참조하여, 제3 가능한 구현에서, 메모리 제어기는 DRAM 내의 제2 랭크에 액세스하기 위한 제2 액세스 요청을 추가로 수신한다. 메모리 제어기는 제2 랭크가 리프레시되지 않을 때 스케줄링 큐에 제2 액세스 요청을 버퍼링한다.
제1 양태 또는 제1 양태의 제1 내지 제3 가능한 구현들 중 어느 하나를 참조하여, 제4 가능한 구현에서, 방법은 다음을 추가로 포함한다: 메모리 제어기에 의해, 수신된 액세스 요청들 내에 있는 DRAM 내의 제2 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 작지 않고 제2 랭크에 대한 연기된 리프레시들의 수량이 지정된 제3 임계값보다 클 때, 제2 랭크를 리프레시하는 단계. 제3 임계값은 1보다 작지 않고 지정된 경고 값보다 작고, 경고 값은 제2 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용된다.
제1 양태 또는 제1 양태의 제1 내지 제4 가능한 구현들 중 어느 하나를 참조하여, 제5 가능한 구현에서, 방법은 다음을 추가로 포함한다: 메모리 제어기에 의해, 수신된 액세스 요청들에 있는 DRAM 내의 제3 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 작지 않고 제3 랭크에 대한 연기된 리프레시들의 수량이 지정된 제3 임계값보다 크지 않을 때 제3 랭크에 대한 리프레시 동작을 수행하는 단계. 제3 임계값은 1보다 작지 않고 지정된 경고 값보다 작고, 경고 값은 제3 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용된다.
제1 양태를 참조하여, 제6 가능한 구현에서, 메모리 제어기에 의해, 제1 랭크를 리프레시하는 것은 다음을 포함한다: 메모리 제어기에 의해, 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작지 않고 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 크지 않을 때 T 간격으로 제1 랭크를 리프레시하는 것. T는 표준 평균 리프레시 간격을 나타내기 위해 사용된다.
제1 양태 또는 제1 양태의 제1 내지 제6 가능한 구현들 중 어느 하나를 참조하여, 제7 가능한 구현에서, 방법은 다음을 추가로 포함한다: 메모리 제어기에 의해, 메모리 제어기가 다른 시간 기간 내에 수신된 액세스 요청들의 수량이 제1 임계값보다 크지 않고, 제3 랭크에 대한 연기된 리프레시들의 수량이 지정된 제3 임계값보다 큰 경우 DRAM 내의 제3 랭크에 액세스하기 위한 액세스 요청들의 수량이 0보다 큰 것으로 결정할 때, 제3 랭크를 리프레시하는 단계. 제3 임계값은 지정된 경고 값보다 작고, 경고 값은 제3 랭크를 즉시 리프레시할 필요를 나타내기 위해 사용된다.
제1 양태 또는 제1 양태의 제1 내지 제7 가능한 구현들 중 어느 하나를 참조하여, 제8 가능한 구현에서, 방법은 다음을 추가로 포함한다: 메모리 제어기에 의해, 메모리 제어기가 다른 시간 기간 내에 수신된 액세스 요청들의 수량이 제1 임계값보다 크지 않고, 제2 랭크에 대한 연기된 리프레시들의 수량이 지정된 제3 임계값보다 크지 않은 경우 DRAM 내의 제2 랭크에 액세스하기 위한 액세스 요청들의 수량이 0보다 큰 것으로 결정할 때, 제2 랭크를 리프레시하는 것을 스킵하는 단계. 제3 임계값은 지정된 경고 값보다 작고, 경고 값은 제2 랭크를 즉시 리프레시할 필요를 나타내기 위해 사용된다.
제2 양태에 따르면, 본 출원은 컴퓨터 시스템을 제공한다. 컴퓨터 시스템은 메모리 제어기 및 메모리 제어기에 접속된 동적 랜덤 액세스 메모리 DRAM을 포함한다. 메모리 제어기는 제1 양태 또는 제1 양태의 가능한 구현들 중 어느 하나에 따른 방법을 수행하도록 구성된다.
제3 양태에 따르면, 본 출원은 메모리 제어기를 제공한다. 메모리 제어기는 컴퓨터 시스템에서 동적 랜덤 액세스 메모리 DRAM을 리프레시하도록 구성된다. 메모리 제어기는 통신 인터페이스 및 리프레시 회로를 포함한다. 통신 인터페이스는 컴퓨터 시스템 내의 프로세서에 의해 전송된 액세스 요청들을 수신하도록 구성된다. 리프레시 회로는 수신된 액세스 요청들에 있는 컴퓨터 시스템에서의 동적 랜덤 액세스 메모리 DRAM 내의 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 0보다 크고 제2 임계값보다 작을 때 제1 랭크를 리프레시하도록 구성된다.
제3 양태를 참조하여, 제1 가능한 구현에서, 리프레시 회로는 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작고 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 클 때 T/N 간격으로 제1 랭크를 리프레시하도록 구체적으로 구성되며, 여기서 T는 표준 평균 리프레시 간격을 나타내기 위해 사용되고, N은 1보다 큰 정수이다.
제3 양태 및 제3 양태의 제1 가능한 구현을 참조하여, 제2 가능한 구현에서, 통신 인터페이스는 리프레시 회로가 제1 랭크를 리프레시하는 프로세스에서, 제1 랭크에 액세스하기 위한 제1 액세스 요청을 수신하도록 추가로 구성된다. 메모리 제어기는 버퍼를 추가로 포함하며, 버퍼는 구성된 버퍼 큐에 제1 액세스 요청을 버퍼링하도록 구성된다. 버퍼는 적어도 버퍼 큐 및 스케줄링 큐를 포함하고, 버퍼 큐는 리프레시 동작이 수행되고 있는 랭크에 대한 액세스 요청을 버퍼링하기 위해 사용되고, 스케줄링 큐는 리프레시 동작이 수행되고 있지 않은 랭크에 전송될 액세스 요청을 버퍼링하기 위해 사용된다.
제3 양태의 제2 가능한 구현을 참조하여, 제3 가능한 구현에서, 통신 인터페이스는 DRAM 내의 제2 랭크에 액세스하기 위한 제2 액세스 요청을 수신하도록 추가로 구성된다. 버퍼는 제2 랭크가 리프레시되고 있지 않을 때 스케줄링 큐에 제2 액세스 요청을 버퍼링하도록 추가로 구성된다.
제3 양태 또는 제3 양태의 제1 내지 제3 가능한 구현들 중 어느 하나를 참조하여, 제4 가능한 구현에서, 리프레시 회로는 수신된 액세스 요청들에 있는 DRAM 내의 제2 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 작지 않고 제2 랭크에 대한 연기된 리프레시들의 수량이 지정된 제3 임계값보다 클 때 제2 랭크를 리프레시하도록 추가로 구성된다. 제3 임계값은 1보다 작지 않고 지정된 경고 값보다 작고, 경고 값은 제2 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용된다.
제3 양태 또는 제3 양태의 제1 내지 제4 가능한 구현들 중 어느 하나를 참조하여, 제5 가능한 구현에서, 리프레시 회로는 수신된 액세스 요청들에 있는 DRAM 내의 제3 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 작지 않고 제3 랭크에 대한 연기된 리프레시들의 수량이 지정된 제3 임계값보다 크지 않을 때 제3 랭크에 대한 리프레시 동작을 수행하는 것을 스킵하도록 추가로 구성되며, 여기서 제3 임계값은 1보다 작지 않고 지정된 경고 값보다 작고, 경고 값은 제3 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용된다.
제3 양태를 참조하여, 제6 가능한 구현에서, 리프레시 회로는 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작지 않고 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 크지 않을 때 T 간격으로 제1 랭크를 리프레시하도록 구체적으로 구성되며, 여기서 T는 표준 평균 리프레시 간격을 나타내기 위해 사용된다.
제4 양태에 따르면, 본 출원은 메모리 리프레시 장치를 추가로 제공한다. 메모리 리프레시 장치는 컴퓨터 시스템에서 동적 랜덤 액세스 메모리 DRAM을 리프레시하도록 구성된다. 메모리 리프레시 장치는 제1 양태 또는 제1 양태의 가능한 구현들 중 어느 하나에 따른 방법을 수행하도록 구성된 기능 모듈들을 포함한다.
제5 양태에 따르면, 본 출원은 프로그램 코드를 포함하는 컴퓨터 프로그램 제품을 추가로 제공하며, 프로그램 코드에 포함되는 명령어들은 컴퓨터에 의해 실행되어, 제1 양태 또는 제1 양태의 가능한 구현들 중 어느 하나에 따른 방법을 구현한다.
제6 양태에 따르면, 본 출원은 컴퓨터 판독가능 저장 매체를 추가로 제공하며, 여기서 컴퓨터 판독가능 저장 매체는 프로그램 코드를 저장하도록 구성되고, 프로그램 코드에 포함된 명령어들은 컴퓨터에 의해 실행되어, 제1 양태 또는 제1 양태의 가능한 구현들 중 어느 하나에 따른 방법을 구현한다.
본 발명의 실시예들에서의 기술적 해결책들을 더 명확하게 설명하기 위해, 다음은 실시예들을 설명하기 위해 요구되는 첨부 도면들을 간단히 설명한다. 명백하게, 이하의 설명에서의 첨부 도면들은 본 발명의 일부 실시예들만을 도시한다.
도 1은 본 발명의 실시예에 따른 컴퓨터 시스템의 개략적 아키텍처 도면이다;
도 2는 본 발명의 실시예에 따른 메모리 제어기의 개략적인 구조도이다;
도 3은 본 발명의 실시예에 따른 메모리 리프레시 방법의 개략적인 흐름도이다; 및
도 4는 본 발명의 실시예에 따른 메모리 리프레시 장치의 개략적인 구조도이다.
본 기술분야의 통상의 기술자가 본 발명에서의 기술적 해결책들을 더 잘 이해하게 하기 위해, 이하에서는 본 발명의 실시예들에서의 첨부 도면들을 참조하여 본 발명의 실시예들에서의 기술적 해결책들을 명확하게 설명한다. 명백하게, 설명된 실시예들은 본 발명의 실시예들의 전부가 아니라 일부일 뿐이다.
도 1은 본 발명의 실시예에 따른 컴퓨터 시스템의 개략적인 아키텍처 도면이다. 도 1에 도시된 바와 같이, 컴퓨터 시스템(100)은 적어도 프로세서(102), 메모리 제어기(106), 및 메모리(108)를 포함할 수 있다. 통상적으로, 메모리 제어기(106)는 프로세서(102)에 통합될 수 있다. 본 발명의 이 실시예에서 제공되는 컴퓨터 시스템에서, 도 1에 도시된 컴포넌트들에 더하여, 컴퓨터 시스템(100)은 외부 스토리지로서 기능하는 자기 디스크 및 통신 인터페이스와 같은 다른 컴포넌트들을 추가로 포함할 수 있다는 점에 유의해야 한다. 본 명세서에서는 제한이 부과되지 않는다.
프로세서(Processor)(102)는 컴퓨터 시스템(100)의 컴퓨팅 유닛 및 제어 유닛(Control Unit)이다. 프로세서(102)는 복수의 프로세서 코어(core)(104)를 포함할 수 있다. 프로세서(102)는 초대규모 집적 회로(very large-scale integrated circuit)일 수 있다. 운영 체제 및 다른 소프트웨어 프로그램이 프로세서(102)에 설치되어, 프로세서(102)가 메모리(108), 버퍼, 및 자기 디스크에 액세스할 수 있다. 본 발명의 이 실시예에서, 프로세서(102)의 코어(104)는, 예를 들어, 중앙 처리 유닛(Central Processing Unit, CPU)일 수 있거나, 다른 애플리케이션-특정 집적 회로(Application-Specific Integrated Circuit, ASIC)일 수 있다는 것이 이해될 수 있다.
메모리 제어기(Memory Controller)(106)는 컴퓨터 시스템(100) 내부에 있고 메모리(108)를 제어하고 메모리(108)로부터 코어(104)로의 데이터 송신을 관리하고 계획하도록 구성되는 버스 회로 제어기이다. 메모리(108)는 메모리 제어기(106)를 통해 코어(104)와 데이터를 교환할 수 있다. 메모리 제어기(106)는 별개의 칩일 수 있고, 시스템 버스를 통해 코어(104)에 접속될 수 있다. 본 기술분야의 통상의 기술자는 메모리 제어기(106)가 (도 1에 도시된 바와 같이) 프로세서(102)에 통합될 수 있거나, 노스 브리지에 내장될 수 있다는 것을 알 수 있다. 메모리 제어기(20)의 특정 위치는 본 발명의 이 실시예에서 제한되지 않는다. 실제 응용 동안, 메모리 제어기(106)는 메모리(108)에 데이터를 기입하거나 메모리(108)로부터 데이터를 판독하기 위해 필요한 논리를 제어할 수 있다.
메모리(108)는 컴퓨터 시스템(100)의 메인 메모리이다. 메모리(108)는 더블 데이터 레이트(double data rate, DDR) 버스를 통해 프로세서(102)에 접속된다. 메모리(108)는 일반적으로 운영 체제 상에서 현재 실행 중인 다양한 소프트웨어, 입력 및 출력 데이터, 및 외부 저장소와 교환되는 정보를 저장하도록 구성된다. 프로세서(102)의 액세스 속도를 증가시키기 위해, 메모리(108)는 높은 액세스 속도의 이점을 가질 필요가 있다. 종래의 컴퓨터 시스템 아키텍처에서, 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM)가 일반적으로 메모리(108)로서 사용된다. 메모리 제어기(106)를 통해, 프로세서(102)는 메모리(108)에 고속으로 액세스하고, 메모리(108) 내의 임의의 저장 유닛에 대해 판독 동작 및 기입 동작을 수행할 수 있다.
본 발명의 이 실시예에서, 메모리(108)가 DRAM인 것이 설명을 위한 예로서 사용된다. 따라서, 메모리(108)는 DRAM(108)으로서 또한 지칭될 수 있다. 데이터는 DRAM(108)의 저장 유닛(이는 DRAM 셀이라고도 지칭될 수 있음)에 저장된다. 본 발명의 이 실시예에서, 저장 유닛은 데이터를 저장하기 위한 최소 저장 유닛(cell)이다. 일반적으로, 하나의 저장 유닛은 1 비트(bit) 데이터를 저장할 수 있다. 물론, 일부 저장 유닛들은 대안적으로 복수의 값을 저장할 수 있다. 전술한 바와 같이, DRAM은 커패시터 내의 전하량을 이용함으로써 데이터 0 또는 1을 나타낸다. 커패시터 내의 전하들은 누설될 수 있고, 커패시터 내의 불충분한 전하들은 저장된 데이터 내의 에러를 야기할 수 있다. 따라서, 메모리 제어기(106)는 DRAM(108) 내의 데이터 손실을 회피하기 위해, 시간 기간의 간격으로 DRAM(108) 내의 데이터를 리프레시한다. 또한, DRAM(108)은 휘발성이고, 컴퓨터 시스템(100)이 전원 오프될 때, DRAM(108) 내의 정보는 더 이상 저장되지 않는다.
실제 응용 동안, DRAM(108) 내의 DRAM 셀들은 행렬로 배열된다. 이 행렬은 DRAM 뱅크로서 지칭된다. DRAM 뱅크 내의 임의의 비트는 대응하는 행 및 열 디코더를 사용함으로써 메모리 제어기(106)에 의해 포지셔닝될 수 있다. 복수의 DRAM 뱅크는 DRAM 칩(이는 메모리 칩이라고도 지칭될 수 있음)을 형성할 수 있고, 복수의 DRAM 칩은 DRAM 랭크를 형성할 수 있다. 복수의 DRAM 랭크는 듀얼 인-라인 메모리 모듈(Dual In-line Memory Modules, DIMM)에 통합될 수 있다. 예를 들어, 도 1에 도시된 바와 같이, DRAM(108)은 복수의 채널(channel)(110)을 포함할 수 있다. 각각의 채널(110)은 적어도 하나의 랭크를 포함할 수 있고, 각각의 랭크는 적어도 하나의 뱅크를 포함할 수 있다. 각각의 뱅크는 데이터를 저장하기 위한 복수의 저장 유닛을 포함한다. 본 기술분야의 통상의 기술자는 랭크가 동일한 칩 선택(chip select) 신호에 접속된 메모리 칩들(chip)인 것을 알 수 있다. 메모리 제어기는 동일한 랭크에서의 칩들에 대한 기입 동작을 수행할 수 있고, 동일한 랭크에서의 칩들은 동일한 제어 신호를 공유한다. 메모리 제어기(106)는 메모리 버스를 통해 DRAM(108) 내의 각각의 채널에서의 저장 유닛들에서의 데이터에 개별적으로 액세스할 수 있다.
본 기술분야의 통상의 기술자는 DRAM 칩의 리프레시 사이클이 DRAM 칩 내의 각각의 저장 유닛의 보유 시간(retention time)과 연관되는 것을 알 수 있다. 현재, 일반적으로 보이는 DRAM 칩들의 표준 리프레시 사이클들은 모두 고정된다. 일반적으로, 표준 리프레시 사이클은 64ms이다. 종래 기술의 리프레시 해결책에서, 메모리 제어기는 tREFI 시간의 간격으로, 랭크가 리프레시될 필요가 있는지를 체크한다. 각각의 리프레시는 tRFC 시간을 소비할 필요가 있다. tREFI는 메모리의 평균 리프레시 간격(average refresh interval)이다. 다시 말해서, tREFI는 메모리 제어기가 리프레시 커맨드를 전송하는 평균 간격을 나타내기 위해 사용된다. tREFI는 리프레시 사이클 및 리프레시 사이클에서 전송될 리프레시 커맨드들의 수량에 기초하여 결정될 수 있다. 예를 들어, tREFI는 64ms/8192=7.8μs일 수 있으며, 여기서 64ms는 리프레시 사이클이고, 8192는 리프레시 사이클에서 전송될 리프레시 커맨드들의 수량이다. tRFC는 행 리프레시 사이클 시간(Row Refresh Cycle Time)이다. 다시 말해서, tRFC는 DRAM 랭크에서 하나의 리프레시 커맨드를 실행하기 위해 요구되는 시간을 나타내기 위해 사용된다. 일반적으로, 더 긴 tREFI는 더 큰 tRFC를 나타내고; 더 짧은 tREFI는 더 작은 tRFC를 나타낸다. 리프레시 프로세스에서의 tRFC 시간 내에서, 리프레시되고 있는 랭크는 랭크에 대한 요청에 응답할 수 없다. 따라서, 리프레시 주파수는 리프레시에 의해 시스템 성능에 야기되는 영향을 완화하도록 조정될 수 있다.
본 기술분야의 통상의 기술자는 상이한 리프레시 모드들이 상이한 리프레시 주파수들을 갖는다는 것을 알 수 있다. 더블 데이터 레이트(double data rate, DDR) 프로토콜은 3개의 리프레시 모드: 1X 모드, 2X 모드 및 4X 모드를 지정한다. 1X 모드에서, 리프레시 동작들은 DDR 프로토콜에서 지정된 tREFI(base)의 간격으로 메모리 칩에 대해 수행되고, 하나의 리프레시 요청을 실행하기 위한 시간은 tRFC1이다. 2X 모드에서, 리프레시 동작들은 tREFI(base)/2의 간격으로 메모리 칩에 대해 수행되고, 하나의 리프레시 요청을 실행하기 위한 시간은 tRFC2이다. 4X 모드에서, 리프레시 동작들은 tREFI(base)/4의 간격으로 메모리 칩에 대해 수행되고, 하나의 리프레시 요청을 실행하기 위한 시간은 tRFC3이다. tRFC1 > tRFC2 > tFRC3. tREFI(base)는 컴퓨터 시스템이 준수하는 DDR 프로토콜에서 정의된 표준 평균 리프레시 간격을 나타내기 위해 사용된다. 통상적으로, tREFI(base)는 DRAM 칩 표면 온도가 정상 온도 범위(0℃ 내지 85℃) 내에 있는 조건에서 1X 모드에서 tREFI를 나타내기 위해 사용된다. DDR4 표준에 따르면, tREFI 및 tRFC의 값들은 실제 스테이터스에 따라 설정될 수 있다. 예를 들어, 8Gb의 용량을 갖는 DRAM 칩에 대해, 1X 구성에서, tREFI는 7.8μs일 수 있고, tRFC는 350ns일 수 있다. 4X 구성에서, tREFI는 1.95μs일 수 있고, tRFC는 160ns일 수 있다. 메모리 리프레시 모드는 DDR4 프로토콜에서 지원된다. DDR4 프로토콜에 따라, 메모리 리프레시 프로세스에서, 메모리 리프레시 모드는 1X 모드, 2X 모드, 및 4X 모드 중에서 하나에서 다른 것으로 스위칭될 수 있다.
전술한 바와 같이, 종래 기술에서, 메모리 제어기는 tREFI 시간 간격으로 랭크가 리프레시될 필요가 있는지를 체크한다. 랭크가 유휴 상태에 있는 경우, 메모리 제어기는 랭크를 리프레시하고; 랭크가 유휴 상태에 있지 않은 경우, 메모리 제어기는 랭크를 리프레시하는 것을 연기한다. 연기 시간이 임계값을 초과할 때, 메모리 제어기는 강제적으로 랭크를 리프레시한다. 그러나, 메모리 내의 트래픽이 비교적 클 때, 랭크는 좀처럼 유휴 상태에 있지 않고, 랭크가 유휴 상태에 있을 수 없는 것이 가능하다. 랭크가 유휴인 경우에만 랭크가 리프레시되는 경우, 리프레시는 계속 연기될 필요가 있다. 결국, 데이터 손실을 회피하기 위해 리프레시가 수행될 필요가 있을 때, 현재 시간 기간 내에 수행되어야 하는 리프레시가 수행될 필요가 있을 뿐만 아니라, 이전에 연기된 리프레시에 대한 메이크-업 리프레시도 수행될 필요가 있다. 따라서, 비교적 많은 수량의 리프레시가 메이크-업 리프레시를 필요로 하는 시간 기간 내에 야기된다. 이 경우, 평균 리프레시 간격 tREFI에 도달하지 않더라도, 리프레시가 수행될 필요가 있다. 다시 말해서, 메이크-업 리프레시가 수행될 필요가 있을 때, 수동 리프레시들의 증가가 야기된다. 랭크에 액세스하기 위한 요청에 대한 응답이 리프레시 동안 적시에 이루어질 수 없기 때문에, 비교적 많은 수량의 수동 리프레시가 있을 때, 액세스 서비스의 중단 시간이 증가한다. 결과적으로, 프로세서는 정지되거나, 더 낮은 효율로 동작할 수 있다. 이 경우, 시스템 성능이 더 영향을 받고, 비교적 높은 리프레시 오버헤드들이 야기된다.
본 기술분야의 통상의 기술자는 메모리(108) 내의 랭크들에 대한 리프레시 동작들이 독립적이라는 것을 알 수 있다. 연구 프로세스에서, DRAM을 리프레시하는 프로세스에서, 리프레시되고 있는 랭크가 리프레시 프로세스에서의 요청에 응답할 수 없어, 시스템의 리프레시 오버헤드들을 초래하고; 또한, 리프레시 프로세스에서, 리프레시되고 있는 랭크에 대한 요청들이 스케줄링 큐를 정체시켜, 다른 랭크에 대한 요청이 적시에 다른 랭크로 전송되기 위해 스케줄링 큐에 들어갈 수 없음을 야기하는 것을 발견한다. 이것은 또한 전체 시스템 성능에 영향을 미치는 원인이다. 더욱이, 리프레시 프로세스에서, 상이한 리프레시 모드들은 상이한 리프레시 주파수들을 가지며, 상이한 리프레시 주파수들은 상이한 버스 이용 레이트들을 초래한다. 따라서, 리프레시 프로세스에서, 리프레시 모드 선택은 또한 시스템 성능에 영향을 미친다.
컴퓨터 시스템의 리프레시 오버헤드들을 감소시키고, 리프레시 프로세스에서 컴퓨터 시스템의 전체 성능을 개선하기 위해, 본 발명의 실시예는 메모리 리프레시 방법을 제공하여, 메모리 스케줄링 정책을 개선하고, 스케줄링 큐에서의 리프레시 동작들의 정체로 인한 다른 랭크에 대한 요청의 실행의 실패를 회피한다. 더욱이, 시스템 버스 이용 레이트는 리프레시 주파수를 동적으로 조정함으로써 더 개선될 수 있다. 다음은 도 1을 참조하여 본 발명의 이 실시예에서 제공되는 컴퓨터 시스템의 메모리 리프레시 해결책을 상세히 설명한다.
도 2는 본 발명의 실시예에 따른 메모리 제어기(106)의 개략적인 구조도이다. 명확한 설명을 위해, 도 2는 또한 메모리 제어기(106)와 프로세서 코어(104) 사이의, 그리고 메모리 제어기(106)와 메모리(108) 사이의 접속들을 개략적으로 도시한다. 메모리(108)는 랭크 0, 랭크 1, 및 랭크 2와 같은 복수의 랭크를 포함할 수 있다. 도 2에 도시된 바와 같이, 메모리 제어기(106)는 통신 인터페이스(1061), 통계 모듈(1062), 리프레시 회로(1064), 버퍼 큐(1066), 스케줄링 큐(1068) 및 스케줄러(1069)를 포함할 수 있다.
본 발명의 이 실시예에서, 메모리 제어기(106) 내의 통신 인터페이스(1061)는 컴퓨터 내의 프로세서(102)에 접속된 프론트엔드 인터페이스를 포함할 수 있고, 또한 메모리(108)에 접속된 백-엔드 인터페이스를 포함할 수 있다. 구체적으로, 메모리 제어기(106)는, 통신 인터페이스(1061)를 통해, 컴퓨터 시스템에서의 프로세서(예를 들어, 도 1의 코어(104))에 의해 전송된 액세스 요청을 수신할 수 있다. 통신 인터페이스(1061)를 통해, 메모리 제어기(106)는 데이터를 메모리(108)에 저장하거나 메모리(108)로부터 데이터를 판독할 수 있다.
통계 모듈(1062)은 2개의 양태에서의 통계 기능들을 포함할 수 있다. 먼저, 통계 모듈(1062)은 메모리 제어기(106)에 의해 수신된 액세스 요청들의 타겟 랭크들의 분포 및 액세스 요청들의 동작 타입들에 대한 통계를 수집하도록 구성될 수 있다. 타겟 랭크는 액세스 요청을 사용하여 액세스될 랭크이다. 액세스 요청들의 동작 타입들은 판독 동작 및 기입 동작과 같은 타입들을 포함할 수 있다. 구체적으로, 통계 모듈(1062)은 액세스 요청들의 타겟 랭크들에 대한 통계를 수집하고, 액세스 요청들에서의 동작 타입들을 획득할 수 있다. 둘째로, 통계 모듈(1062)은 메모리 제어기(106)에 의해 수신된 액세스 요청들의 수량에 대한 통계를 추가로 수집할 수 있다. 구체적으로, 통계 모듈(1062)은 각각의 액세스될 랭크의 액세스 요청들의 수량 및 메모리 제어기(106)에 의해 수신된 액세스 요청들의 총 수량에 대한 통계를 수집할 수 있다. 통계 모듈(1062)은 버퍼 큐(1066) 및 스케줄링 큐(1068)에 버퍼링된 액세스 요청들에 기초하여 통계를 수집할 수 있다. 실제 응용 동안, 통계 모듈(1062)은 카운터에 의해 구현될 수 있다. 다시 말해서, 통계 모듈(1062)은 하나 이상의 카운터를 포함할 수 있다. 본 발명의 이 실시예에서, 액세스 요청은 메모리에 액세스하기 위한 프로세서의 요청이다. 액세스 요청은 판독 요청, 기입 요청 등을 포함할 수 있다. 다시 말해서, 프로세서는 액세스 요청에 따라 메모리로부터 데이터를 판독하거나 메모리에 데이터를 기입할 수 있다.
리프레시 회로(1064)는 통계 모듈(1062)의 통계 결과에 기초한 tREFI 시간의 간격으로, 리프레시 요청을 생성할지를 결정하고, 생성된 리프레시 요청을 스케줄링 큐에 넣도록 구성된다. 예를 들어, 통계 모듈(1062)이 통계 수집을 통해, 랭크에 대한 액세스 요청들의 수량이 지정된 임계값보다 작은 것을 획득한 경우, 리프레시 회로(1064)는 랭크에 대한 리프레시 요청을 생성하고, 리프레시 요청을 스케줄링 큐(1068)에 넣을 수 있다. 실제 응용 동안, 리프레시 회로(1064)에 의해 생성된 리프레시 요청은 대안적으로 스케줄러(1069)에 직접 전송될 수 있어서, 스케줄러(1069)는 생성된 리프레시 요청을 메모리(108)에 전송하고, 메모리(108)는 생성된 리프레시 요청에 따라 대응하는 랭크에 대한 리프레시 동작을 수행한다는 점이 이해될 수 있다. tREFI는 평균 리프레시 간격을 나타내기 위해 사용된다는 점에 유의해야 한다. 실제 응용 동안, 리프레시 회로(1064)는 대안적으로 tREFI보다 작은 간격으로 리프레시 요청을 생성할 수 있다. 예를 들어, 메이크-업 리프레시가 수행될 필요가 있을 때, 리프레시 회로(1064)는 tREFI보다 작은 간격으로 리프레시 요청을 생성할 수 있다. 또한, 본 기술분야의 통상의 기술자는 tREFI가 상이한 리프레시 모드들에 따라 변한다는 것을 알 수 있다.
버퍼 큐(1066)는 랭크에 대한 리프레시 동작을 수행하는 프로세스에서, 랭크에 대해 코어(104)에 의해 전송되는 액세스 요청을 버퍼링하도록 구성된다. 예를 들어, 메모리(108)에서의 랭크 0이 예로서 사용된다. 랭크 0에 대한 리프레시 동작을 수행하는 프로세스에서, 메모리 제어기(106)가 랭크 0에 대해 코어(104)로부터 판독 요청을 수신하는 경우, 판독 요청은 스케줄링 큐(1068)보다는 버퍼 큐(1066)에 버퍼링될 수 있다. 실제 응용 동안, 스케줄링 우선순위는 버퍼 큐(1066) 내의 액세스 요청에 대해 추가로 설정될 수 있다. 예를 들어, 일부 액세스 요청들은 우선 스케줄링 또는 정상 스케줄링으로 설정될 수 있다.
스케줄링 큐(1068)는 코어(104)에 의해 전송된 액세스 요청 및 리프레시 회로(1064)에 의해 전송된 리프레시 요청과 같은 동작 요청들을 버퍼링하도록 구성된다. 스케줄러(1069)는 스케줄링 큐(1068)에서의 동작 요청(적어도 액세스 요청 및 리프레시 요청을 포함함)을 메모리(108)에 전송하여, 예를 들어, 메모리(108)에 액세스하거나 리프레시하는 동작을 구현하도록 구성된다. 본 발명의 이 실시예에서, 버퍼 큐(1066)는 스케줄링 큐(1068)의 업프론트 버퍼이다. 이러한 방식으로, 버퍼 큐(1066)는 스케줄링 큐(1068)에 들어가는 액세스 요청을 버퍼링하도록 구성될 수 있다. 본 발명의 이 실시예에서, 편리한 설명을 위해, 버퍼 큐(1066) 및 스케줄링 큐(1068)를 포함하는 2개의 레벨의 버퍼들이 구성되는 것이 본 발명의 이 실시예에서 예로서 사용된다. 실제 응용 동안, 요건에 따라 더 많은 레벨의 버퍼들이 구성될 수 있다. 예를 들어, 더 많은 레벨의 버퍼 큐(1066)가 스케줄링 큐(1068) 앞에 구성될 수 있다.
다음은 도 3을 참조하여 본 발명의 실시예에서 제공되는 메모리 리프레시 방법을 상세히 설명한다. 도 3은 본 발명의 실시예에 따른 메모리 리프레시 방법의 흐름도이다. 도 3에 도시된 메모리 리프레시 방법은 도 1 및 도 2에 도시된 메모리 제어기(106)에 의해 수행될 수 있다. 도 3에 도시된 바와 같이, 방법은 다음의 단계들을 포함할 수 있다.
단계 301에서, 메모리 제어기(106)는 코어(104)에 의해 전송된 액세스 요청들을 수신한다. 본 발명의 이 실시예에서, 액세스 요청은 메모리(108)에 액세스하기 위해 사용되는 요청이다. 메모리 제어기(106)는 액세스 요청에 따라 메모리(108)로부터 데이터를 판독하거나 메모리(108)에 데이터를 기입할 수 있다. 액세스 요청들의 동작 타입들은 판독 동작 및 기입 동작과 같은 타입들을 포함할 수 있다. 실제 응용 동안, 메모리 제어기(106)와 코어(104) 사이의 통신 인터페이스(1061)를 통해, 메모리 제어기(106)는 코어(104)에 의해 전송된 액세스 요청을 수신할 수 있다.
단계 302에서, 메모리 제어기(106)는 수신된 액세스 요청들의 수량이 제1 임계값보다 큰지를 결정한다. 전술한 바와 같이, 메모리에서의 데이터 손실을 회피하기 위해, 메모리 제어기(106)는, tREFI 시간의 간격으로, 랭크가 리프레시될 필요가 있는지를 체크한다. 본 발명의 이 실시예에서, 편리한 설명을 위해, 메모리 제어기(106)가 랭크가 리프레시될 필요가 있는지를 체크하는 프로세스는 리프레시 폴링 프로세스로서 지칭된다. 하나의 tREFI 시간은 시간 기간으로서 지칭된다. 다시 말해서, 메모리 제어기(106)는 tREFI 시간의 간격으로 리프레시 폴링을 한번 수행한다. 구체적으로는, 하나의 경우에, 리프레시 폴링 프로세스에서, 메모리 제어기(106)는, 메모리 제어기(106)에 버퍼링된 처리될 액세스 요청들의 수량- 통계 수집을 통해 통계 모듈(1062)에 의해 획득됨 -에 기초하여, 액세스 요청들의 수량이 제1 임계값보다 큰지를 결정할 수 있다. 다른 경우에, 메모리 제어기(106)는, 지정된 시간 기간 내에 메모리 제어기(106)에 의해 수신된 액세스 요청들의 수량- 통계 수집을 통해 통계 모듈(1062)에 의해 획득됨 -에 기초하여, 액세스 요청들의 수량이 제1 임계값보다 큰지를 결정할 수 있다. 지정된 시간 기간은 tREFI보다 크지 않은 시간 기간일 수 있다. 제1 임계값은 0보다 크다. 제1 임계값은 실제 응용 동안 트래픽의 크기에 기초하여 미리 설정될 수 있다. 예를 들어, 제1 임계값은 100으로 설정될 수 있다. 비교적 많은 수량의 액세스 요청이 있다는 것을 나타내는, 메모리 제어기(106)에 의해 수신된 액세스 요청들의 수량이 제1 임계값보다 클 때, 방법은 단계 304로 진행한다. 메모리 제어기(106)에 의해 수신된 액세스 요청들의 수량이 제1 임계값보다 크지 않을 때, 방법은 단계 306으로 진행한다.
단계 304에서, 메모리 제어기(106)는 액세스될 제1 랭크에 대한 액세스 요청들의 수량이 제2 임계값보다 큰지를 결정한다. 제1 랭크는 메모리(108) 내의 임의의 랭크일 수 있다. 본 발명의 이 실시예에서, 메모리 제어기(106)는, 제1 랭크에 대한 액세스 요청들의 수량- 통계 수집을 통해 통계 모듈(1062)에 의해 획득됨 -에 기초하여, 제1 랭크에 대한 액세스 요청들의 수량이 제2 임계값보다 작은지를 결정할 수 있다. 제2 임계값은 응용 시나리오에 따라 구체적으로 설정될 수 있고, 제2 임계값은 1보다 크다. 예를 들어, 제2 임계값은 20으로 설정될 수 있다. 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 작을 때, 방법은 단계 310으로 진행한다. 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 클 때, 방법은 단계 308로 진행한다. 제1 랭크에 대한 액세스 요청들의 수량은 단계 302에서 지정된 시간 기간 내에 메모리 제어기(106)에 의해 수신되는 제1 랭크에 대한 액세스 요청들의 수량일 수 있거나, 메모리 제어기(106)에서 버퍼링되는 제1 랭크에 대한 처리될 액세스 요청들의 수량일 수 있다는 점에 유의해야 한다.
단계 306에서, 메모리 제어기(106)는 제1 랭크가 유휴 상태에 있는지를 결정한다. 구체적으로, 단계 302에서, 메모리 제어기(106)가 수신된 액세스 요청들의 수량이 제1 임계값보다 큰 것으로 결정할 때, 그것은 전체 메모리가 비교적 큰 액세스 트래픽을 갖는다는 것을 나타내고, 이 경우, 메모리 제어기(106)는 제1 랭크가 리프레시될 필요가 있는지를 추가로 결정할 필요가 있다. 제1 랭크가 유휴 상태에 있는 경우, 다시 말해서, 메모리 제어기의 스케줄링 큐에 있는 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 0인 경우, 방법은 단계 310으로 진행한다. 제1 랭크가 유휴 상태에 있지 않은 경우, 다시 말해서, 메모리 제어기의 스케줄링 큐에 있는 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 0이 아닌 경우, 방법은 단계 308로 진행한다.
단계 308에서, 메모리 제어기(106)는 제1 랭크에 대한 연기된 리프레시들의 수량이 지정된 제3 임계값보다 큰지를 결정한다. 메모리 제어기(106)가 제1 랭크에 대한 연기된 리프레시들의 수량이 제3 임계값보다 큰 것으로 결정할 때, 방법은 단계 310으로 진행한다. 메모리 제어기(106)가 제1 랭크에 대한 연기된 리프레시들의 수량이 제3 임계값보다 크지 않은 것으로 결정할 때, 방법은 단계 312로 진행한다. 본 발명의 이 실시예에서, 제3 임계값은 1보다 작지 않고 지정된 경고 값보다 작다. 경고 값은 랭크에 대해 연기될 수 있는 리프레시 커맨드들(postponing refresh commands)의 최대 수량에 기초하여 결정될 수 있다. 예를 들어, DDR4 프로토콜에 따르면, 랭크에 대해 최대 8개 리프레시 커맨드가 연기될 수 있고; 다시 말해서, 경고 값은 8이고, 제3 임계값은 8보다 작을 필요가 있다. 예를 들어, 제3 임계값은 6으로 설정될 수 있다.
본 발명의 이 실시예에서, 연기 카운터(도 2에 도시되지 않음)는 리프레시 회로(1064)에 배치될 수 있고, 연기 카운터는 제1 랭크에 대한 연기된 리프레시들의 수량에 대한 통계를 수집하도록 구성될 수 있다. 실제 응용 동안, 연기 카운터는 대안적으로 리프레시 회로(1064)와 독립적으로 배치될 수 있다. 다른 경우에, 연기 카운터가 배치되지 않을 수 있고, 대신에, 제1 랭크에 대한 연기된 리프레시들의 수량은 통계 수집을 통해 소프트웨어를 사용하여 획득된다. 본 발명의 이 실시예에서, 제1 랭크에 대한 연기된 리프레시들의 수량이 통계 수집을 통해 구체적으로 획득되는 방식에 대해 어떠한 제한도 부과되지 않는다.
단계 310에서, 메모리 제어기(106)는 제1 랭크를 리프레시한다. 구체적으로, 하나의 경우에, 메모리 제어기(106) 내의 리프레시 회로(1064)는 디폴트 리프레시 모드에 따라 리프레시 요청을 생성할 수 있다. 다른 경우에, 메모리 제어기(106) 내의 리프레시 회로(1064)는, 통계 수집을 통해 통계 모듈(1062)에 의해 획득되는 액세스 요청들의 수량, 액세스 요청들의 타입들, 및 타겟 랭크들의 분포에 기초하여 리프레시 모드를 결정하고, 결정된 리프레시 모드에 따라 리프레시 요청을 생성하여, 생성된 리프레시 요청에 따라 제1 랭크를 리프레시할 수 있다.
전술한 바와 같이, 더블 데이터 레이트(double data rate, DDR) 프로토콜은 3개의 리프레시 모드: 1X 모드, 2X 모드 및 4X 모드를 지정한다. 본 발명의 이 실시예에서, 리프레시 모드는 적어도 제1 리프레시 모드 및 제2 리프레시 모드를 포함할 수 있다. 제1 리프레시 모드에서, 메모리 제어기는 tREFI(base)/N의 간격으로 리프레시들을 수행한다. 제2 리프레시 모드에서, 메모리 제어기는 tREFI(base)의 간격으로 리프레시들을 수행한다. 예를 들어, 제1 리프레시 모드는 4X 또는 2X 모드일 수 있고, 제2 리프레시 모드는 1X 모드를 포함할 수 있다. tREFI(base)는 DDR 프로토콜에서 정의된 표준 평균 리프레시 간격을 나타내기 위해 사용되고, N은 1보다 큰 정수이다. 통상적으로, tREFI(base)는 DRAM 칩 표면 온도가 정상 온도 범위(0℃ 내지 85℃) 내에 있는 조건에서 1X 모드에서 tREFI를 나타내기 위해 사용된다. 편리한 설명을 위해, tREFI(base)는 또한 본 발명의 이 실시예에서 T로 표시될 수 있다.
메모리 시스템의 경우, 리프레시 주파수의 감소는 연기된 리프레시들의 감소보다 시스템 성능 개선에 더 중요하다. 따라서, 일반적으로, 4X 모드에서 리프레시들을 수행하는 것은 1X 모드에서 리프레시들을 수행하는 것보다 더 낮은 시스템 성능을 초래한다. 또한, 액세스 요청들에서 높은 판독 요청들 또는 기입 요청들의 비율이 비교적 높을 때, 메모리(108)는 판독과 기입 간의 비교적 작은 수량의 스위치로 인해 비교적 높은 대역폭 이용 레이트를 갖는다. 그러나, 본 발명을 구현하는 프로세스에서, DDR 프로토콜이 4개의 활성 윈도(Four Active Window, tFAW)를 지정하기 때문에, 복수의 액세스 요청에 대해 비교적 작은 수량의 액세스될 타겟 랭크가 있을 때, 다시 말해서, 복수의 액세스 요청이 메모리(108) 내의 비교적 작은 수량의 랭크에 집중할 때, tFAW 시간 윈도우에서, 동시에 동작할 수 있는 하나의 랭크에서의 행들의 수량이 제한되고, 따라서, 대신에 전체 시스템 성능이 저하되는 것을 발견한다. tFAW는 tFAW 시간 윈도우 내에서, 하나의 랭크가 최대 4개의 행 활성화 커맨드가 전송될 수 있게 하는 것을 의미한다. 메모리(108) 내의 2개의 랭크를 예로서 취한다. 판독 요청들 또는 기입 요청들의 비율이 비교적 높고 액세스 요청들이 랭크들 중 하나에 집중할 때, 다른 랭크는 리프레시되고 있다. 더 긴 리프레시 시간은 더 긴 단일-랭크 액세스 지속기간을 나타내고, 전체 시스템 성능에서의 더 큰 저하를 나타낸다.
본 발명을 구현하는 프로세스에서, 4X 모드와 1X 모드 사이를 비교하여, 4X 모드에서 리프레시에 대한 단일 리프레시 시간 tRFC3이 비교적 작기 때문에, 단일 리프레시 프로세스에서, tFAW 제한에 의해 시스템에서 야기되는 충격이 비교적 작고, 전체 시스템 성능에서의 저하가 비교적 작다는 것이 발견된다. 따라서, 본 발명의 이 실시예에서, 전체 시스템 성능을 개선하고, 시스템에 대한 tFAW 제한을 감소시키기 위해, 본 발명의 이 실시예에서 리프레시 모드가 동적으로 조정된다. 구체적으로는, 하나의 경우에, 리프레시 회로(1064)가 통계 모듈(1062)의 통계 결과에 기초하여, 액세스 요청들의 액세스될 타겟 랭크들의 수량이 지정된 제4 임계값보다 작고 액세스 요청들의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 큰 것으로 결정할 때, 리프레시 회로(1064)는 4X 모드에서 제1 랭크를 리프레시하기로 결정할 수 있다. 다시 말해서, 메모리 제어기(106)에 의해 수신된 액세스 요청들의 액세스될 타겟 랭크들이 비교적 집중되고 판독 요청들 또는 기입 요청들의 비율이 비교적 높을 때, 제1 랭크는 4X 모드에서 리프레시될 수 있다. 실제 응용 동안, 제4 임계값은 메모리(108) 내의 랭크들의 총 수량에 기초하여 결정될 수 있다. 예를 들어, 메모리(108)가 4개의 랭크를 포함할 때, 제4 임계값은 2로 설정될 수 있다. 제5 임계값은 60%일 수 있다. 본 발명의 이 실시예에서, 타겟 랭크는 액세스 요청을 사용하여 액세스될 랭크인 것이 이해될 수 있다. 타겟 랭크들의 수량은 액세스 요청들을 사용하여 액세스될 랭크들의 수량이다.
다른 경우에, 메모리 제어기(106)에 의해 수신된 액세스 요청들의 액세스될 타겟 랭크들이 비교적 분산되거나, 메모리 제어기(106)에 의해 수신된 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 제5 임계값보다 크지 않은 경우, 리프레시 회로(1064)는 1X 모드에서 제1 랭크를 리프레시할 수 있다. 본 발명의 이 실시예에서, 제4 임계값은 0보다 크고, 제4 임계값은 메모리(108) 내의 랭크들의 총 수량보다 작다는 점이 이해될 수 있다. 실제 응용 동안, 제4 임계값은 메모리(108) 내의 랭크들의 총 수량에 기초하여 결정될 수 있다. 예를 들어, 제4 임계값은 DRAM 내의 모든 랭크들의 총 수량의 절반으로 설정될 수 있다. 제5 임계값은 비교적 높은 비율로 설정될 수 있다. 예를 들어, 판독 요청들의 비율이 수신된 액세스 요청들의 총 수량에서의 판독 요청들의 수량의 비율에 의해 측정될 때, 제5 임계값은 60%일 수 있다.
본 발명의 이 실시예에서, 판독 요청들의 비율은 수신된 액세스 요청들에서의 판독 요청들의 비율을 나타내기 위해 사용된다. 기입 요청들의 비율은 수신된 액세스 요청들에서의 기입 요청들의 비율을 나타내기 위해 사용된다. 예를 들어, 판독 요청들의 비율은 액세스 요청들의 총 수량에서의 판독 요청들의 수량의 비율에 의해 표현될 수 있다. 기입 요청들의 비율은, 액세스 요청들의 총 수량에서의 기입 요청들의 수량의 비율에 의해 표현될 수 있다. 실제 응용 동안, 판독 요청들의 비율은 기입 요청들의 수량에 대한 판독 요청들의 수량의 비율에 의해 표현될 수 있다. 기입 요청들은 판독 요청들의 수량에 대한 기입 요청들의 수량의 비율에 의해 표현될 수 있다. 판독 요청들 또는 기입 요청들의 비율이 결정될 수 있는 경우, 본 명세서에서 제한이 부과되지 않는다.
단계 310에서, 리프레시 회로(1064)가 리프레시 모드를 결정한 후에, 리프레시 회로(1064)는 결정된 리프레시 모드(예를 들어, 1X 모드 또는 4X 모드)에 따라 대응하는 리프레시 요청을 생성하고, 생성된 리프레시 요청을 (도 2에 도시된 바와 같이) 스케줄링 큐(1068)에 넣어, 스케줄러(1069)가 리프레시 요청을 메모리(108)에 전송할 수 있고, 메모리(108)는 메모리 제어기(106)에 의해 생성된 리프레시 요청에 따라 제1 랭크에 대한 리프레시 동작을 수행할 수 있다. 실제 응용 동안, 리프레시 요청을 생성한 후에, 리프레시 회로(1064)는 대안적으로 생성된 리프레시 요청을 스케줄러(1069)에 직접 전송할 수 있고, 스케줄러(1069)는 생성된 리프레시 요청을 제1 랭크에 전송한다.
메모리 제어기(106)가 제1 랭크에 대해 리프레시 동작이 수행될 필요가 있는 것으로 결정할 때, 메모리 제어기(106)가 제1 랭크에 대한 액세스 요청을 실행하고 있거나, 스케줄링 큐가 제1 랭크에 대한 액세스 요청을 여전히 갖는 경우, 메모리 제어기(106)는, 제1 랭크에 대해 액세스 요청이 실행된 후 및 스케줄링 큐에서의 제1 랭크에 대한 액세스 요청이 처리된 후 양자 모두에만 리프레시 요청을 전송하여, 시스템 성능에 영향을 미치는 것을 피하는 것을 피할 수 있다는 것이 이해될 수 있다.
단계 312에서, 메모리 제어기(106)는 제1 랭크에 대한 리프레시 동작을 연기한다. 구체적으로, 단계 308에서, 메모리 제어기(106)가 제1 랭크에 대한 연기된 동작들의 수량이 제3 임계값보다 크지 않은 것으로 결정할 때, 메모리 제어기는 제1 랭크에 대한 리프레시 동작을 연기하고, 연기 카운터의 값에 1을 추가한다. 다시 말해서, 메모리 제어기(106)가 제1 랭크가 유휴 상태에 있지 않다는 것을 단계 306을 통해 결정할 때, 즉, 제1 랭크에 대한 액세스 요청이 처리되고 있거나 스케줄링 큐가 제1 랭크에 대한 액세스 요청을 여전히 포함할 때, 제1 랭크에 대한 연기들의 수량이 제3 임계값에 도달하지 않는 경우, 제1 랭크에 대한 비교적 많은 수량의 액세스 요청이 존재하는 것이 고려될 수 있다. 성능에 영향을 주는 것을 피하기 위해, 후속 폴링 프로세스에서 제1 랭크에 대해 리프레시 동작을 수행하기 위해, 리프레시 동작이 제1 랭크에 대해 수행되지 않는다. 전술한 바와 같이, 제3 임계값은 1보다 작지 않고 지정된 경고 값보다 작다. 경고 값은 제1 랭크에 대해 연기될 수 있는 리프레시 커맨드들의 최대 수량에 기초하여 결정될 수 있다. 경고 값은 제1 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용된다. 다시 말해서, 경고 값은 제1 랭크에 대한 리프레시 동작을 강제적으로 수행하도록 메모리 제어기(106)에 지시하기 위해 사용된다.
리프레시 동작이 제1 랭크에 대해 강제적으로 수행될 때, 이전에 연기된 리프레시에 대해 메이크-업 리프레시가 수행될 필요가 있다는 것이 이해될 수 있다. 따라서, 비교적 많은 수량의 리프레시가 메이크-업 리프레시를 필요로 하는 시간 기간 내에 야기된다. 특정 메이크-업 리프레시 시간 기간 내에서, 일 양태에서, 제1 랭크에 대한, 스케줄링 큐에 넣어진 액세스 요청을 실행하는 것에 대한 실패가 야기될 수 있고; 결과적으로, 스케줄링 큐(1068)의 공간이 비교적 긴 시간 동안 점유되고, 다른 랭크에 대한 액세스 요청이 스케줄링 큐에 들어갈 수 없어서, 전체 컴퓨터 시스템의 성능에 영향을 미친다. 다른 양태에서, 시스템 서비스는 짧은 시간 내의 리프레시들의 증가로 인해 중단될 수 있다. 요약하면, 제1 랭크를 강제로 리프레시하는 것은 컴퓨터 시스템(100)의 리프레시 전력 소비를 증가시키고, 시스템 성능에 영향을 미친다.
결론적으로, 본 발명의 이 실시예에서 제공되는 리프레시 방법에서, 하나의 tREFI 폴링 프로세스에서, 다음 몇몇 경우들이 제1 랭크에 대한 리프레시 동작에 관하여 존재할 수 있다.
경우 1: 메모리 제어기(106)에 의해 수신된 액세스 요청들의 수량이 제1 임계값보다 크고 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 작을 때, 메모리 제어기(106)는 제1 랭크에 대한 리프레시 동작을 직접 수행한다. 다시 말해서, 컴퓨터 시스템(100)의 액세스 트래픽이 비교적 클 때, 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 비교적 작다면, 메모리 제어기(106)는, 제1 랭크가 유휴 상태에 있는 후에만 제1 랭크에 대한 리프레시 동작을 수행하는 대신에, 제1 랭크에 대한 리프레시 동작을 능동적으로 수행할 수 있다. 이것은, 컴퓨터 시스템(100)의 액세스 트래픽이 비교적 클 때, 제1 랭크가 유휴 상태에 있을 가능성이 매우 낮고, 리프레시가 계속 연기되면, 데이터 손실을 회피하기 위한 후속하는 강제적 리프레시 동안, 수동 리프레시들의 증가가 특정 시간 내에 야기될 수 있기 때문이다. 본 발명의 이 실시예에서 제공되는 그러한 능동 리프레시 방식은 리프레시 연기들에 의해 야기되는 수동 리프레시들의 증가에 의해 컴퓨터 시스템 성능에 야기되는 영향을 완화시키고, 메모리 리프레시 융통성을 개선할 수 있다. 따라서, 컴퓨터 시스템 성능이 개선될 수 있고, 리프레시 오버헤드들이 감소될 수 있다. 물론, 본 발명의 이 실시예에서, 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 지정된 제2 임계값보다 작다는 것은 제1 랭크가 유휴인 경우를 포함한다는 것이 이해될 수 있다.
경우 2: 메모리 제어기(106)에 의해 수신된 액세스 요청들의 수량이 제1 임계값보다 크고, 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 작지 않고, 제1 랭크에 대한 연기된 리프레시들의 수량이 제3 임계값보다 클 때, 메모리 제어기(106)는 제1 랭크에 대한 리프레시 동작을 직접 수행한다. 다시 말해서, 컴퓨터 시스템(100)에서의 메모리 액세스 트래픽이 비교적 크고 제1 랭크에 대한 액세스 요청들의 수량이 또한 비교적 클 때, 제1 랭크에 대한 연기들의 수량이 제3 임계값보다 큰 경우, 리프레시 동작이 제1 랭크에 대해 즉각적으로 수행될 필요가 있어서, 제1 랭크에 대한 연기된 리프레시들의 수량이 경고 값에 도달하기 때문에 강제적 리프레시를 수행할 필요가 있을 가능성을 피하고, 비교적 많은 수량의 수동 리프레시에 의해 컴퓨터 시스템 성능에 야기되는 충격을 완화시키고, 그에 의해 메모리 리프레시 융통성을 개선한다. 제3 임계값은 실제 응용 동안 경고 값을 참조하여 지정된 임계값이어서, 컴퓨터 시스템은 성능에 영향을 미치지 않고 특정 범위 내에서 리프레시를 연기하고, 그에 의해 메모리 리프레시 융통성을 개선시킬 수 있다는 점이 이해될 수 있다.
경우 3: 메모리 제어기(106)에 의해 수신되는 액세스 요청들의 수량이 제1 임계값보다 크고, 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 작지 않고, 제1 랭크에 대한 연기된 리프레시들의 수량이 제3 임계값보다 크지 않을 때, 제1 랭크에 대한 리프레시 동작이 연기될 수 있다. 다시 말해서, 본 발명의 이 실시예에서, 컴퓨터 시스템(100)에서의 메모리 액세스 트래픽이 비교적 크고, 제1 랭크에 대한 액세스 요청들의 수량이 또한 비교적 클 때, 제1 랭크에 대한 연기된 리프레시들의 수량이 미리 설정된 제3 임계값에 도달하지 않았다면, 스케줄링 큐(1068)에서의 제1 랭크에 대한 액세스 요청에 대한 처리에 영향을 미치는 것을 피하기 위해, 제1 랭크에 대한 리프레시 동작이 연기될 수 있다.
경우 4: 메모리 제어기(106)에 의해 수신되는 액세스 요청들의 수량이 제1 임계값보다 크지 않고 제1 랭크가 유휴 상태에 있을 때, 메모리 제어기(106)는 제1 랭크에 대한 리프레시 동작을 직접 수행할 수 있다. 다시 말해서, 컴퓨터 시스템(100)의 메모리 트래픽이 비교적 약간이고 제1 랭크가 유휴 상태에 있을 때, 제1 랭크에 대한 리프레시 동작은 컴퓨터 시스템 성능에 비교적 작은 영향을 야기한다. 따라서, 리프레시 동작은 제1 랭크에 대해 직접 수행될 수 있다.
경우 5: 메모리 제어기(106)에 의해 수신되는 액세스 요청들의 수량이 제1 임계값보다 크지 않고, 제1 랭크가 유휴 상태에 있지 않고, 제1 랭크에 대한 연기된 리프레시들의 수량이 제3 임계값보다 클 때, 메모리 제어기(106)는 제1 랭크에 대한 리프레시 동작을 능동적으로 수행할 필요가 있다. 다시 말해서, 컴퓨터 시스템(100)의 메모리 트래픽이 비교적 약간이지만 제1 랭크가 비교적 사용 중일 때, 제1 랭크에 대한 강제적 리프레시를 회피하기 위해, 현재 폴링 프로세스에서 제1 랭크에 대해 리프레시 동작이 수행될 필요가 있어서, 연기된 리프레시들의 수량이 경고 값에 도달하기 때문에 시스템 상의 수동 리프레시들의 증가를 회피하고, 수동 리프레시들에 의한 컴퓨터 시스템 성능에 대한 영향을 완화시킨다.
경우 6: 메모리 제어기(106)에 의해 수신되는 액세스 요청들의 수량이 제1 임계값보다 크지 않고, 제1 랭크는 유휴 상태에 있지 않고, 제1 랭크에 대한 연기된 리프레시들의 수량은 제3 임계값보다 크지 않을 때, 메모리 제어기(106)는 제1 랭크에 대해 리프레시 동작을 연기할 수 있다. 다시 말해서, 컴퓨터 시스템(100)의 메모리 트래픽이 비교적 약간이지만 제1 랭크가 비교적 사용 중일 때, 제1 랭크에 대한 액세스 요청들을 가능한 한 많이 처리하기 위해, 제1 랭크에 대한 연기들의 수량이 여전히 제3 임계값보다 크지 않을 때, 제1 랭크에 대한 리프레시 동작이 연기될 수 있다.
본 발명의 이러한 실시예에서 제공되는 메모리 리프레시 방법에 관한 전술한 설명들 모두는 하나의 리프레시 폴링 프로세스에서 메모리(108) 내의 제1 랭크에 대한 리프레시 동작을 예로서 사용하여 이루어진다는 점이 이해될 수 있다. 실제 응용 동안, 각각의 리프레시 폴링 프로세스에서, 메모리 제어기는 위에서 제공된 방법에 따라 상이한 랭크들이 리프레시될 필요가 있는지를 결정할 수 있다. 예를 들어, 제1 리프레시 폴링 프로세스에서, 메모리 제어기(106)는 경우 1에 따라 제1 랭크를 리프레시하고, 경우 2에 따라 메모리(108) 내의 제2 랭크를 리프레시하고, 경우 3에 따라 메모리(108) 내의 제3 랭크에 대한 리프레시 동작을 연기하기로 결정할 수 있다. 제2 리프레시 폴링 프로세스에서, 메모리 제어기(106)는 경우 6에 따라 제1 랭크를 리프레시하는 것을 연기하고, 경우 5에 따라 제2 랭크를 리프레시할 수 있다.
또한, 메모리 제어기(106)는 제1 랭크에 대해 리프레시 동작이 수행되고 있는 tRFC 기간 내에도 제1 랭크에 대한 액세스 요청에 응답할 수 없다. 따라서, 제1 랭크에 대한 액세스 요청이 스케줄링 큐(1068)를 정체시키고, 다른 랭크(예를 들어, 제2 랭크)에 대한 액세스 요청이 스케줄링 큐(1068)에 들어갈 수 없는 것을 야기하고, 시스템 성능에 영향을 미치게 하는 것을 방지하기 위해, 본 발명의 이 실시예에서, 리프레시 동작이 제1 랭크에 대해 수행되고 있을 때, 메모리 제어기(106)가 제1 랭크에 대한 액세스 요청을 수신하는 경우, 메모리 제어기(106)는 제1 랭크에 대한 액세스 요청을 버퍼 큐(1066)에 넣을 수 있다. 메모리 제어기(106)가 제1 랭크에 대한 리프레시 동작을 수행한 후에, 버퍼 큐(1066) 내의 제1 랭크에 대한 액세스 요청은 버퍼 큐(1066)로부터 스케줄링 큐(1068) 내에 넣어진다. 또한, 본 발명의 이 실시예에서, 제1 랭크에 대한 리프레시 동작을 수행한 후에, 메모리 제어기(106)는 제1 랭크에 대한 후속하여 새롭게 수신된 액세스 요청을 버퍼 큐(1066)보다는 스케줄링 큐(1068)에 직접 넣을 수 있다.
본 발명의 이 실시예에서, 리프레시 동작이 제1 랭크에 대해 수행되고 있을 때, 메모리(108)에서 제2 랭크에 대해 리프레시 동작이 수행되고 있지 않은 경우, 메모리 제어기(106)는 제2 랭크에 대한 수신된 액세스 요청을 스케줄링 큐(1068)에 직접 넣을 수 있다는 점이 이해될 수 있다. 이러한 스케줄링 방식에서, 스케줄링 큐에서의 액세스 요청들의 타겟 랭크들은 분산형 방식(scattered manner)으로 분산될 수 있어, 제1 랭크에 대한 리프레시 동작을 수행하는 프로세스에서, 메모리 제어기(106)는 가능한 한 많은 상이한 랭크들에 대한 액세스 요청들을 처리할 수 있어, 리프레시 동작 프로세스에서 컴퓨터 시스템(100)의 시스템 오버헤드들을 감소시키고, 컴퓨터 시스템(100)의 실행 효율을 개선한다.
본 발명의 이 실시예에서 제공되는 리프레시 방법으로부터, 본 발명의 이러한 실시예에서, 메모리 리프레시 프로세스에 의해 컴퓨터 시스템 성능에 야기되는 영향을 완화시키기 위해, 시스템에 의해 수신되는 액세스 요청들의 스테이터스 및 액세스될 타겟 랭크의 스테이터스 양자 모두가 타겟 랭크가 리프레시될 필요가 있는지를 결정하기 위해 포괄적으로 고려된다는 것을 알 수 있다. 이러한 방식으로, 메모리 제어기의 리프레시 시간을 관리함으로써, 기존 DDR 프로토콜과의 호환성에 기초하여, 리프레시 연기들에 의해 야기되는 수동 리프레시들의 증가에 의한 컴퓨터 시스템의 성능에 대한 영향이 완화되고, 메모리 리프레시 융통성이 개선되고, 리프레시 오버헤드들이 감소된다. 더욱이, 본 발명의 이 실시예에서, 리프레시 동작이 제1 랭크에 대해 수행될 필요가 있을 때, 상이한 리프레시 모드가 타겟 랭크들의 분포 및 액세스 요청들의 타입 분포에 기초하여 추가로 선택될 수 있어, 메모리 제어기의 리프레시 효율을 개선하고, 컴퓨터 시스템의 성능을 개선한다.
또한, 본 발명의 이 실시예에서는, 액세스 요청들의 동시성을 개선시키기 위해, 제1 랭크에 대한 리프레시 동작이 다른 랭크에 대한 액세스 요청에 대한 처리에 영향을 미치지 않도록, 복수의 버퍼 레벨이 메모리 제어기에 구성될 수 있다. 예를 들어, 스케줄링 큐 및 버퍼 큐는 개별적으로 구성될 수 있다. 이러한 방식으로, 제1 랭크에 대해 리프레시 동작이 수행되고 있는 tRFC 기간 내에 수신되는 제1 랭크에 대한 액세스 요청이 버퍼 큐에서 버퍼링될 수 있어, tRFC 시간 기간 내에 수신되는 제1 랭크에 대한 액세스 요청이 스케줄링 큐를 정체시키고, 다른 랭크에 대한 액세스 요청에 대한 메모리 제어기의 처리에 영향을 미치는 것을 방지한다. 전체 컴퓨터 시스템의 처리 효율이 추가로 개선된다.
실제 응용 동안, 도 3에 도시된 실시예에서의 각각의 단계가 반드시 수행되는 것은 아니라는 것을 유의해야 한다. 예를 들어, 메모리 리프레시 방법은 도 3에 도시된 실시예에서의 전체 시스템에서의 액세스 트래픽의 크기를 참조하여 설명되는데, 예를 들어, 폴링 프로세스에서, 단계 302는 먼저 메모리 제어기(106)에 의해 수신된 액세스 요청들의 수량이 제1 임계값보다 큰지를 결정하기 위해 수행될 수 있다. 그러나, 실제 응용 동안, 전체 시스템에서의 액세스 트래픽의 크기는 구별되지 않을 수 있지만, 대신 처리는 리프레시될 랭크의 액세스 트래픽 스테이터스에 기초하여 직접 수행된다. 이 경우, 도 3의 실시예에서의 단계 302는 필요하지 않다. 다시 말해서, 본 발명의 이 실시예에서 제공되는 리프레시 방법은 시스템의 큰 액세스 트래픽의 경우 및 시스템의 약간의 액세스 트래픽의 경우 양자 모두에서 사용될 수 있다. 본 명세서에서는 제한이 부과되지 않는다.
도 4는 본 발명의 실시예에 따른 메모리 리프레시 장치의 개략적인 구조도이다. 메모리 리프레시 장치(400)는 도 1에 도시된 메모리(108)를 리프레시하도록 구성된다. 도 4에 도시된 바와 같이, 메모리 리프레시 장치(400)는 수신 모듈(402), 통계 모듈(404), 결정 모듈(406) 및 리프레시 모듈(408)을 포함할 수 있다.
수신 모듈(402)은 액세스 요청들을 수신하도록 구성된다. 구체적으로, 수신 모듈(402)은 컴퓨터 시스템(100) 내의 하나 이상의 코어(104)에 의해 전송된 액세스 요청들을 수신할 수 있다. 수신 모듈(402)은 메모리(108)에 의해 리턴된 데이터를 수신하도록 추가로 구성될 수 있다는 점이 이해될 수 있다. 수신 모듈(402)은 구체적으로 메모리 제어기(106)와 코어(104) 사이의 통신 인터페이스, 및 메모리 제어기(106)와 메모리(108) 사이의 통신 인터페이스를 포함한다.
통계 모듈(404)은 수신 모듈(402)에 의해 수신된 액세스 요청들의 수량에 관한 통계를 수집하도록 구성된다. 실제 응용 동안, 통계 모듈(404)은 각각의 랭크에 액세스하기 위한 액세스 요청들의 수량에 대한 통계를 추가로 수집할 수 있다.
결정 모듈(406)은 수신된 액세스 요청들에 있는 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 0보다 크고 제2 임계값보다 작은지를 결정하도록 구성된다. 제1 랭크는 메모리에서의 임의의 랭크이다. 실제 응용 동안, 결정 모듈(406)은 통계 모듈(404)의 통계 결과에 기초하여 결정을 수행할 수 있다.
리프레시 모듈(408)은 수신된 액세스 요청들에 있는 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 0보다 크고 제2 임계값보다 작을 때 제1 랭크를 리프레시하도록 구성된다. 전술한 바와 같이, 실제 응용 동안, 하나의 경우에, 리프레시 모듈(408)은 지정된 리프레시 모드에 따라 리프레시 요청을 생성하고, 생성된 리프레시 요청에 따라 제1 랭크를 리프레시할 수 있다. 다른 경우에, 리프레시 모듈(408)은 통계 수집을 통해 통계 모듈(404)에 의해 획득되는 액세스 요청들의 수량 및 액세스될 타겟 랭크들의 분포에 기초하여 리프레시 모드를 동적으로 결정하고, 결정된 리프레시 모드에 따라 리프레시 요청을 생성하여, 생성된 리프레시 요청에 따라 제1 랭크를 리프레시할 수 있다. 구체적으로, 리프레시 모듈(408)은 생성된 리프레시 요청을 메모리(108)에 전송할 수 있어서, 메모리(108)는 리프레시 요청에 따라 제1 랭크를 리프레시할 수 있다.
가능한 경우에, 결정 모듈(406)은 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작은지, 및 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 큰지를 결정하도록 추가로 구성된다. 리프레시 모듈(408)은 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작고, 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 클 때 T/N 간격으로 제1 랭크를 리프레시하도록 구성된다. T는 표준 평균 리프레시 간격을 나타내기 위해 사용되고, N은 1보다 큰 정수이다. 구체적으로, 리프레시 모듈(408)은 제1 리프레시 모드에 따라 제1 리프레시 요청을 생성하고, 생성된 제1 리프레시 요청에 따라 제1 랭크를 리프레시할 수 있다. 제1 리프레시 모드에서, 메모리 제어기는 T/N 간격으로 제1 랭크를 리프레시한다. 실제 응용 동안, T는 DDR 프로토콜에 명시된 tREFI(base)일 수 있다.
가능한 경우에, 메모리 리프레시 장치(400)는 버퍼 모듈(410)을 추가로 포함할 수 있다. 버퍼 모듈(410)은 수신 모듈(402)에 의해 수신된 액세스 요청들을 버퍼 큐 또는 스케줄링 큐에 버퍼링하도록 구성된다. 실제 응용 동안, 버퍼 모듈(410)은 버퍼 큐 및 스케줄링 큐를 포함할 수 있다. 버퍼 큐는 스케줄링 큐의 업프론트 큐이다.
가능한 경우에, 수신 모듈(402)은, 제1 랭크를 리프레시하는 프로세스에서, 제1 랭크에 액세스하기 위한 제1 액세스 요청을 수신하도록 추가로 구성된다. 버퍼 모듈(410)은 구성된 버퍼 큐에서 제1 액세스 요청을 버퍼링하도록 구성된다. 버퍼 모듈(410)은 버퍼 큐 및 스케줄링 큐를 포함하고, 버퍼 큐는 리프레시 동작이 수행되고 있는 랭크에 대한 새롭게 수신된 액세스 요청을 버퍼링하기 위해 사용되고, 스케줄링 큐는 리프레시 동작이 수행되지 않고 있는 랭크에 전송될 액세스 요청을 버퍼링하기 위해 사용된다.
다른 가능한 경우에서, 수신 모듈(402)은 DRAM 내의 제2 랭크에 액세스하기 위한 제2 액세스 요청을 수신하도록 추가로 구성된다. 버퍼 모듈(410)은 제2 랭크에 대해 리프레시 동작이 수행되고 있지 않을 때 구성된 스케줄링 큐에 제2 액세스 요청을 버퍼링하도록 추가로 구성된다.
선택적으로, 결정 모듈(406)은 수신된 액세스 요청들에 있는 DRAM 내의 제2 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 작은지를 결정하도록 추가로 구성된다. 리프레시 모듈(408)은 수신된 액세스 요청들에 있는 DRAM 내의 제2 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 작지 않고 제2 랭크에 대한 연기된 리프레시들의 수량이 지정된 제3 임계값보다 클 때 제2 랭크를 리프레시하도록 추가로 구성된다. 제3 임계값은 1보다 작지 않고 지정된 경고 값보다 작고, 경고 값은 제2 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용된다.
다른 가능한 경우에, 결정 모듈(406)은 수신된 액세스 요청들에 있는 DRAM 내의 제3 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 작은지를 결정하도록 추가로 구성된다. 리프레시 모듈(408)은 수신된 액세스 요청들에 있는 DRAM 내의 제3 랭크에 액세스하기 위한 액세스 요청들의 수량이 제2 임계값보다 작지 않고 제3 랭크에 대한 연기된 리프레시들의 수량이 지정된 제3 임계값보다 크지 않을 때 제3 랭크에 대한 리프레시 동작을 수행하는 것을 스킵하도록 추가로 구성되며, 여기서 제3 임계값은 1보다 작지 않고 지정된 경고 값보다 작고, 경고 값은 제3 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용된다.
다른 가능한 경우에, 결정 모듈(406)은 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작은지, 및 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 큰지를 결정하도록 추가로 구성된다. 리프레시 모듈(408)은 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작지 않고 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 크지 않을 때 제1 랭크를 리프레시하도록 추가로 구성되고, 이는 구체적으로 T 간격으로 제1 랭크를 리프레시하는 것을 포함하며, 여기서 T는 표준 평균 리프레시 간격을 나타내기 위해 사용된다.
다른 가능한 경우에, 리프레시 모듈(408)은 수신된 액세스 요청들에 있는 DRAM 내의 제2 랭크에 액세스하기 위한 액세스 요청들의 수량이 0보다 크고 지정된 제2 임계값보다 작고 제2 랭크에 대한 연기된 리프레시들의 수량은 지정된 제3 임계값보다 크지 않을 때, 제2 랭크에 대한 리프레시 동작을 수행하는 것을 스킵하도록 추가로 구성되며, 제3 임계값은 1보다 작지 않고 지정된 경고 값보다 작고, 경고 값은 제2 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용된다.
다른 가능한 경우에, 리프레시 모듈(408)은 수신된 액세스 요청들에 있는 DRAM 내의 제3 랭크에 액세스하기 위한 액세스 요청들의 수량이 0보다 크고 제3 랭크에 대한 연기된 리프레시들의 수량이 지정된 제3 임계값보다 클 때 제3 랭크를 리프레시하도록 추가로 구성되며, 여기서 제3 임계값은 1보다 작지 않고 지정된 경고 값보다 작고, 경고 값은 제3 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용된다.
도 4에 도시된 메모리 리프레시 장치(400) 내의 모듈들은 도 2에 도시된 메모리 제어기 내의 하나 이상의 컴포넌트에 개별적으로 위치될 수 있다는 점이 이해될 수 있다. 본 발명의 이 실시예에서, 도 4에 도시된 실시예에서의 모듈들의 일부 또는 전부는 이 실시예에서의 해결책의 목적을 달성하기 위한 실제 요건에 따라 선택될 수 있다. 도 4의 실시예에서 상세히 설명되지 않은 내용에 대해서는, 도 3에 도시된 방법 실시예에서의 관련 설명을 참조한다.
설명된 장치 실시예들은 단지 예들이라는 것이 이해될 수 있다. 예를 들어, 모듈 분할은 논리적 기능 분할일 뿐이며, 실제 구현에서는 다른 분할일 수 있다. 예를 들어, 복수의 모듈 또는 컴포넌트가 다른 시스템에 조합 또는 통합될 수 있거나, 또는 일부 특징들이 무시되거나 수행되지 않을 수 있다. 또한, 전술한 실시예들에서 논의된 모듈들 사이의 접속들은 전기적, 기계적, 또는 다른 형태들일 수 있다. 별개의 부분들로서 설명된 모듈들은 물리적으로 분리될 수 있거나 그렇지 않을 수 있고, 모듈들로서 표시된 부분들은 물리적 모듈들일 수 있거나 그렇지 않을 수 있다. 또한, 본 출원의 실시예들에서의 기능 모듈들은 독립적으로 존재할 수 있거나, 하나의 처리 모듈에 통합될 수 있다. 예를 들어, 도 4에 도시된 기능 모듈들은 도 2에 도시된 메모리 제어기에 통합될 수 있다.
본 발명의 실시예는 프로그램 코드를 저장하는 컴퓨터 판독가능 저장 매체를 포함하는, 데이터 처리를 위한 컴퓨터 프로그램 제품을 추가로 제공하며, 프로그램 코드에 포함된 명령어들은 전술한 방법 실시예들 중 어느 하나에서 설명된 방법 프로세스를 실행하기 위해 사용된다. 본 기술분야의 통상의 기술자는, 전술한 저장 매체가, USB 플래시 드라이브, 이동식 하드 디스크, 자기 디스크, 광 디스크, 랜덤 액세스 메모리(Random-Access Memory, RAM), 솔리드 스테이트 디스크(Solid State Disk, SSD), 또는 비휘발성 메모리(non-volatile memory)와 같은, 프로그램 코드를 저장할 수 있는 임의의 비일시적(non-transitory) 머신 판독가능 매체를 포함할 수 있다는 것을 이해할 수 있다.
본 출원에서 제공되는 실시예들은 단지 예들이라는 점에 유의해야 한다. 본 기술분야의 통상의 기술자는, 설명의 편의성 및 간결성을 위해, 전술한 실시예들에서, 실시예들은 상이한 양태들을 강조하고, 일 실시예에서 상세히 설명되지 않은 부분에 대해, 다른 실시예의 관련 설명을 참조할 수 있다는 것을 분명히 알 수 있다. 첨부 도면들에 개시된 본 발명, 청구항들, 및 특징들의 실시예들은 독립적으로 존재할 수 있거나, 조합으로 존재할 수 있다. 본 발명의 실시예들에서 하드웨어 형태로 설명된 특징들은 소프트웨어에 의해 실행될 수 있고, 그 반대도 마찬가지이며, 본 명세서에서 제한되지 않는다.

Claims (28)

  1. 메모리 리프레시 방법으로서,
    상기 방법은 메모리 제어기 및 동적 랜덤 액세스 메모리 DRAM을 포함하는 컴퓨터 시스템에 적용되고, 상기 방법은:
    상기 메모리 제어기에 의해, 상기 DRAM에 액세스하기 위한 액세스 요청들을 수신하는 단계 - 상기 DRAM에 액세스하기 위한 상기 액세스 요청들은 상기 DRAM의 제1 랭크에 액세스하기 위한 액세스 요청들을 포함하고, 상기 제1 랭크는 DRAM 셀들의 제1 그룹을 포함함 -;
    상기 메모리 제어기에 의해, 상기 DRAM에 액세스하기 위한 상기 수신된 액세스 요청들의 수량이 제1 임계값보다 큰지 여부를 결정하는 단계;
    상기 DRAM에 액세스하기 위한 상기 수신된 액세스 요청들의 수량이 상기 제1 임계값보다 크면, 상기 메모리 제어기에 의해, 상기 제1 랭크에 액세스하기 위한 상기 액세스 요청들의 수량이 제2 임계값보다 큰지 여부를 결정하는 단계; 및
    상기 제1 랭크에 액세스하기 위한 상기 액세스 요청들의 수량이 0보다 크고 상기 제2 임계값보다 작을 때, 상기 메모리 제어기에 의해, 상기 제1 랭크를 리프레시하는 단계를 포함하는 메모리 리프레시 방법.
  2. 제1항에 있어서,
    상기 메모리 제어기에 의해, 상기 제1 랭크를 리프레시하는 것은:
    상기 메모리 제어기에 의해, 상기 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작고 상기 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 클 때, T/N 간격으로 상기 제1 랭크를 리프레시하는 것- T는 표준 평균 리프레시 간격을 나타내기 위해 사용되고, N은 1보다 큰 정수임 -을 포함하는 메모리 리프레시 방법.
  3. 제1항에 있어서,
    상기 메모리 제어기가 상기 제1 랭크를 리프레시하는 프로세스에서, 상기 메모리 제어기에 의해, 상기 제1 랭크에 액세스하기 위한 제1 액세스 요청을 수신하는 단계; 및
    상기 메모리 제어기에 의해, 구성된 버퍼 큐에 상기 제1 액세스 요청을 버퍼링하는 단계- 상기 메모리 제어기는 적어도 상기 버퍼 큐 및 스케줄링 큐를 포함하고, 상기 버퍼 큐는 리프레시 동작이 수행되고 있는 랭크에 대한 액세스 요청을 버퍼링하기 위해 사용되고, 상기 스케줄링 큐는 리프레시 동작이 수행되고 있지 않은 랭크에 전송될 액세스 요청을 버퍼링하기 위해 사용됨 -를 추가로 포함하는 메모리 리프레시 방법.
  4. 제3항에 있어서,
    상기 메모리 제어기에 의해, 상기 DRAM 내의 제2 랭크에 액세스하기 위한 제2 액세스 요청을 수신하는 단계; 및
    상기 메모리 제어기에 의해, 상기 제2 랭크가 리프레시되고 있지 않을 때 상기 스케줄링 큐에 상기 제2 액세스 요청을 버퍼링하는 단계를 추가로 포함하는 메모리 리프레시 방법.
  5. 제4항에 있어서,
    상기 메모리 제어기에 의해, 상기 수신된 액세스 요청들에 있는 상기 DRAM 내의 상기 제2 랭크에 액세스하기 위한 액세스 요청들의 수량이 상기 제2 임계값보다 작지 않고 상기 제2 랭크에 대한 연기된 리프레시들의 수량이 제3 임계값보다 클 때, 상기 제2 랭크를 리프레시하는 단계- 상기 제3 임계값은 1보다 작지 않고 경고 값보다 작고, 상기 경고 값은 상기 제2 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용됨 -를 추가로 포함하는 메모리 리프레시 방법.
  6. 제5항에 있어서,
    상기 메모리 제어기에 의해, 상기 수신된 액세스 요청들에 있는 상기 DRAM 내의 제3 랭크에 액세스하기 위한 액세스 요청들의 수량이 상기 제2 임계값보다 작지 않고 상기 제3 랭크에 대한 연기된 리프레시들의 수량이 상기 제3 임계값보다 크지 않을 때 상기 제3 랭크에 대한 리프레시 동작을 수행하는 것을 스킵하는 단계- 상기 제3 임계값은 1보다 작지 않고 상기 경고 값보다 작고, 상기 경고 값은 상기 제3 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용됨 -를 추가로 포함하는 메모리 리프레시 방법.
  7. 제1항에 있어서,
    상기 메모리 제어기에 의해, 상기 제1 랭크를 리프레시하는 것은:
    상기 메모리 제어기에 의해, 상기 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작지 않고 상기 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 크지 않을 때, T 간격으로 상기 제1 랭크를 리프레시하는 것- T는 표준 평균 리프레시 간격을 나타내기 위해 사용됨 -을 포함하는 메모리 리프레시 방법.
  8. 메모리 제어기로서,
    컴퓨터 시스템 내의 프로세서에 의해 전송된 동적 랜덤 액세스 메모리 DRAM에 액세스하기 위한 액세스 요청들을 수신하도록 구성된 통신 인터페이스 - 상기 DRAM에 액세스하기 위한 액세스 요청들은 상기 DRAM의 제1 랭크에 액세스하기 위한 액세스 요청들을 포함하고, 상기 제1 랭크는 DRAM 셀들의 제1 그룹을 포함함 -; 및
    상기 DRAM에 액세스하기 위한 상기 수신된 액세스 요청들의 수량이 제1 임계값보다 큰지 여부를 결정하고;
    상기 DRAM에 액세스하기 위한 상기 수신된 액세스 요청들의 수량이 제1 임계값보다 크면, 상기 제1 랭크에 액세스하기 위한 상기 액세스 요청들의 수량이 제2 임계값보다 큰지 여부를 결정하고;
    상기 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 0보다 크고 상기 제2 임계값보다 작을 때, 상기 제1 랭크를 리프레시하도록 구성된 리프레시 회로를 포함하는 메모리 제어기.
  9. 제8항에 있어서,
    상기 리프레시 회로는:
    상기 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작고 상기 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 클 때, T/N 간격으로 상기 제1 랭크를 리프레시하도록 구성되며, T는 표준 평균 리프레시 간격을 나타내기 위해 사용되고, N은 1보다 큰 정수인 메모리 제어기.
  10. 제8항에 있어서,
    상기 통신 인터페이스는, 상기 리프레시 회로가 상기 제1 랭크를 리프레시하는 프로세스에서, 상기 제1 랭크에 액세스하기 위한 제1 액세스 요청을 수신하도록 추가로 구성되고;
    상기 메모리 제어기는,
    구성된 버퍼 큐에 상기 제1 액세스 요청을 버퍼링하도록 구성된 버퍼를 추가로 포함하며, 상기 버퍼는 적어도 상기 버퍼 큐 및 스케줄링 큐를 포함하고, 상기 버퍼 큐는 리프레시 동작이 수행되고 있는 랭크에 대한 액세스 요청을 버퍼링하기 위해 사용되고, 상기 스케줄링 큐는 리프레시 동작이 수행되고 있지 않은 랭크에 전송될 액세스 요청을 버퍼링하기 위해 사용되는 메모리 제어기.
  11. 제10항에 있어서,
    상기 통신 인터페이스는 상기 DRAM 내의 제2 랭크에 액세스하기 위한 제2 액세스 요청을 수신하도록 추가로 구성되고;
    상기 버퍼는 상기 제2 랭크가 리프레시되고 있지 않을 때 상기 스케줄링 큐에 상기 제2 액세스 요청을 버퍼링하도록 추가로 구성되는 메모리 제어기.
  12. 제11항에 있어서,
    상기 리프레시 회로는:
    상기 수신된 액세스 요청들에 있는 상기 DRAM 내의 상기 제2 랭크에 액세스하기 위한 액세스 요청들의 수량이 상기 제2 임계값보다 작지 않고 상기 제2 랭크에 대한 연기된 리프레시들의 수량이 제3 임계값보다 클 때, 상기 제2 랭크를 리프레시하도록 추가로 구성되며, 상기 제3 임계값은 1보다 작지 않고 경고 값보다 작고, 상기 경고 값은 상기 제2 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용되는 메모리 제어기.
  13. 제12항에 있어서,
    상기 리프레시 회로는:
    상기 수신된 액세스 요청들에 있는 상기 DRAM 내의 제3 랭크에 액세스하기 위한 액세스 요청들의 수량이 상기 제2 임계값보다 작지 않고 상기 제3 랭크에 대한 연기된 리프레시들의 수량이 상기 제3 임계값보다 크지 않을 때 상기 제3 랭크에 대한 리프레시 동작을 수행하는 것을 스킵하도록 추가로 구성되며, 상기 제3 임계값은 1보다 작지 않고 상기 경고 값보다 작고, 상기 경고 값은 상기 제3 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용되는 메모리 제어기.
  14. 제8항에 있어서,
    상기 리프레시 회로는:
    상기 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작지 않고 상기 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 크지 않을 때, T 간격으로 상기 제1 랭크를 리프레시하도록 구성되며, T는 표준 평균 리프레시 간격을 나타내기 위해 사용되는 메모리 제어기.
  15. 메모리 리프레시 장치로서,
    상기 메모리 리프레시 장치는 컴퓨터 시스템 내의 동적 랜덤 액세스 메모리 DRAM을 리프레시하도록 구성되고,
    상기 DRAM에 액세스하기 위한 액세스 요청들을 수신하도록 구성된 수신 모듈 - 상기 DRAM에 액세스하기 위한 액세스 요청들은 상기 DRAM의 제1 랭크에 액세스하기 위한 액세스 요청들을 포함하고, 상기 제1 랭크는 DRAM 셀들의 제1 그룹을 포함함 -; 및
    상기 DRAM에 액세스하기 위한 상기 수신된 액세스 요청들의 수량이 제1 임계값보다 큰지 여부를 결정하고, 상기 DRAM에 액세스하기 위한 상기 수신된 액세스 요청들의 수량이 제1 임계값보다 크면, 상기 제1 랭크에 액세스하기 위한 상기 액세스 요청들의 수량이 제2 임계값보다 큰지 여부를 결정하도록 구성된 통계 모듈; 및
    상기 수신된 액세스 요청들에 있는 상기 DRAM 내의 상기 제1 랭크에 액세스하기 위한 액세스 요청들의 수량이 0보다 크고 상기 제2 임계값보다 작을 때, 상기 제1 랭크를 리프레시하도록 구성된 리프레시 모듈을 포함하는 메모리 리프레시 장치.
  16. 제15항에 있어서,
    상기 리프레시 모듈은 상기 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작고 상기 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 클 때, T/N 간격으로 상기 제1 랭크를 리프레시하도록 구성되며, T는 표준 평균 리프레시 간격을 나타내기 위해 사용되고, N은 1보다 큰 정수인 메모리 리프레시 장치.
  17. 제15항에 있어서,
    상기 수신 모듈은, 상기 제1 랭크를 리프레시하는 프로세스에서, 상기 제1 랭크에 액세스하기 위한 제1 액세스 요청을 수신하도록 추가로 구성되고;
    상기 메모리 리프레시 장치는,
    구성된 버퍼 큐에 상기 제1 액세스 요청을 버퍼링하도록 구성된 버퍼 모듈을 추가로 포함하며, 상기 버퍼 모듈은 적어도 상기 버퍼 큐 및 스케줄링 큐를 포함하고, 상기 버퍼 큐는 리프레시 동작이 수행되고 있는 랭크에 대한 액세스 요청을 버퍼링하기 위해 사용되고, 상기 스케줄링 큐는 리프레시 동작이 수행되고 있지 않은 랭크에 전송될 액세스 요청을 버퍼링하기 위해 사용되는 메모리 리프레시 장치.
  18. 제17항에 있어서,
    상기 수신 모듈은 상기 DRAM 내의 제2 랭크에 액세스하기 위한 제2 액세스 요청을 수신하도록 추가로 구성되고;
    상기 버퍼 모듈은 상기 제2 랭크가 리프레시되고 있지 않을 때 상기 스케줄링 큐에 상기 제2 액세스 요청을 버퍼링하도록 추가로 구성되는 메모리 리프레시 장치.
  19. 제18항에 있어서,
    상기 리프레시 모듈은 상기 수신된 액세스 요청들에 있는 상기 DRAM 내의 상기 제2 랭크에 액세스하기 위한 액세스 요청들의 수량이 상기 제2 임계값보다 작지 않고 상기 제2 랭크에 대한 연기된 리프레시들의 수량이 제3 임계값보다 클 때, 상기 제2 랭크를 리프레시하도록 추가로 구성되며, 상기 제3 임계값은 1보다 작지 않고 경고 값보다 작고, 상기 경고 값은 상기 제2 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용되는 메모리 리프레시 장치.
  20. 제19항에 있어서,
    상기 리프레시 모듈은 상기 수신된 액세스 요청들에 있는 상기 DRAM 내의 제3 랭크에 액세스하기 위한 액세스 요청들의 수량이 상기 제2 임계값보다 작지 않고 상기 제3 랭크에 대한 연기된 리프레시들의 수량이 상기 제3 임계값보다 크지 않을 때 상기 제3 랭크를 리프레시하는 것을 스킵하도록 추가로 구성되며, 상기 제3 임계값은 1보다 작지 않고 상기 경고 값보다 작고, 상기 경고 값은 상기 제3 랭크에 대한 리프레시 동작을 즉시 수행할 필요를 나타내기 위해 사용되는 메모리 리프레시 장치.
  21. 제15항에 있어서,
    상기 리프레시 모듈은 상기 수신된 액세스 요청들의 타겟 랭크들의 수량이 지정된 제4 임계값보다 작지 않고 상기 액세스 요청들에서의 판독 요청들 또는 기입 요청들의 비율이 지정된 제5 임계값보다 크지 않을 때, T 간격으로 상기 제1 랭크를 리프레시하도록 구성되며, T는 표준 평균 리프레시 간격을 나타내기 위해 사용되는 메모리 리프레시 장치.
  22. 컴퓨터 시스템으로서,
    메모리 제어기 및 상기 메모리 제어기에 접속된 동적 랜덤 액세스 메모리 DRAM을 포함하며, 상기 메모리 제어기는 제1항 내지 제7항 중 어느 한 항에 따른 상기 방법을 수행하도록 구성되는 컴퓨터 시스템.
  23. 컴퓨터 판독가능 저장 매체로서, 하나 이상의 컴퓨터 실행가능 명령어를 포함하며, 상기 하나 이상의 컴퓨터 실행가능 명령어가 컴퓨터에 의해 실행될 때, 상기 컴퓨터는 제1항 내지 제7항 중 어느 한 항에 따른 상기 방법을 수행하는 컴퓨터 판독가능 저장 매체.
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020197030437A 2017-04-14 2017-04-14 메모리 리프레시 기술 및 컴퓨터 시스템 KR102258360B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/080640 WO2018188085A1 (zh) 2017-04-14 2017-04-14 内存刷新技术及计算机系统

Publications (2)

Publication Number Publication Date
KR20190126888A KR20190126888A (ko) 2019-11-12
KR102258360B1 true KR102258360B1 (ko) 2021-05-31

Family

ID=63792104

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197030437A KR102258360B1 (ko) 2017-04-14 2017-04-14 메모리 리프레시 기술 및 컴퓨터 시스템

Country Status (10)

Country Link
US (1) US20200066330A1 (ko)
EP (1) EP3605542B1 (ko)
JP (1) JP7043515B2 (ko)
KR (1) KR102258360B1 (ko)
CN (1) CN110546707B (ko)
AU (1) AU2017409368B2 (ko)
BR (1) BR112019021554B1 (ko)
CA (1) CA3058778C (ko)
SG (1) SG11201908892TA (ko)
WO (1) WO2018188085A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11244717B2 (en) * 2019-12-02 2022-02-08 Micron Technology, Inc. Write operation techniques for memory systems
KR20220031793A (ko) 2020-09-03 2022-03-14 삼성전자주식회사 메모리 장치, 그것을 포함하는 메모리 시스템, 그것을 제어하는 제어기 및 그것의 동작 방법
US11798604B2 (en) * 2021-09-01 2023-10-24 Dell Products L.P. Memory architecture having ranks with variable data widths
CN113741820B (zh) * 2021-09-18 2023-10-03 青岛海信传媒网络技术有限公司 一种数据从内存刷新到eMMC存储器的方法及显示设备
US20230236653A1 (en) * 2022-01-26 2023-07-27 Samsung Electronics Co.,Ltd. Power reduction for systems having multiple ranks of memory
US20230359373A1 (en) * 2022-05-03 2023-11-09 Qualcomm Incorporated Selective refresh for memory devices
CN115148248B (zh) * 2022-09-06 2022-11-08 北京奎芯集成电路设计有限公司 基于深度学习的dram刷新方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120144106A1 (en) * 2010-12-06 2012-06-07 Bains Kuljit S Memory Device Refresh Commands On the Fly

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0349094A (ja) * 1989-07-18 1991-03-01 Toshiba Corp メモリ制御装置
JPH10149311A (ja) * 1996-11-20 1998-06-02 Ricoh Co Ltd メモリ制御装置
JP4154010B2 (ja) * 1997-07-17 2008-09-24 キヤノン株式会社 メモリ制御装置およびメモリ制御方法
CN101000798B (zh) * 2007-01-12 2010-05-19 威盛电子股份有限公司 存储器刷新方法及存储器刷新系统
JPWO2009139109A1 (ja) * 2008-05-13 2011-09-15 パナソニック株式会社 メモリ制御装置、およびこれを備えた情報処理装置
US8639874B2 (en) * 2008-12-22 2014-01-28 International Business Machines Corporation Power management of a spare DRAM on a buffered DIMM by issuing a power on/off command to the DRAM device
JP5155221B2 (ja) * 2009-03-11 2013-03-06 ルネサスエレクトロニクス株式会社 メモリ制御装置
US8489807B2 (en) * 2010-12-03 2013-07-16 International Business Machines Corporation Techniques for performing refresh operations in high-density memories
US8539146B2 (en) * 2011-11-28 2013-09-17 International Business Machines Corporation Apparatus for scheduling memory refresh operations including power states
US9269418B2 (en) * 2012-02-06 2016-02-23 Arm Limited Apparatus and method for controlling refreshing of data in a DRAM
US8909874B2 (en) * 2012-02-13 2014-12-09 International Business Machines Corporation Memory reorder queue biasing preceding high latency operations
US9196347B2 (en) * 2013-03-14 2015-11-24 International Business Machines Corporation DRAM controller for variable refresh operation timing
CN104143355B (zh) * 2013-05-09 2018-01-23 华为技术有限公司 一种刷新动态随机存取存储器的方法和装置
CN108231109B (zh) * 2014-06-09 2021-01-29 华为技术有限公司 动态随机存取存储器dram的刷新方法、设备以及系统
US9685219B2 (en) * 2015-05-13 2017-06-20 Samsung Electronics Co., Ltd. Semiconductor memory device for deconcentrating refresh commands and system including the same
US9576637B1 (en) * 2016-05-25 2017-02-21 Advanced Micro Devices, Inc. Fine granularity refresh
CN106875971B (zh) * 2017-02-16 2021-01-22 上海兆芯集成电路有限公司 动态随机存取存储器控制器及其控制方法
SG11201908904TA (en) * 2017-04-14 2019-10-30 Huawei Tech Co Ltd Memory refresh technology and computer system
US10236035B1 (en) * 2017-12-04 2019-03-19 Nanya Technology Corporation DRAM memory device adjustable refresh rate method to alleviate effects of row hammer events
US10969997B2 (en) * 2018-11-07 2021-04-06 Intel Corporation Memory controller that filters a count of row activate commands collectively sent to a set of memory banks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120144106A1 (en) * 2010-12-06 2012-06-07 Bains Kuljit S Memory Device Refresh Commands On the Fly

Also Published As

Publication number Publication date
EP3605542B1 (en) 2021-07-21
AU2017409368B2 (en) 2022-07-07
CN110546707B (zh) 2021-10-19
AU2017409368A1 (en) 2019-10-24
CA3058778A1 (en) 2018-10-18
CA3058778C (en) 2023-02-21
CN110546707A (zh) 2019-12-06
JP2020517024A (ja) 2020-06-11
SG11201908892TA (en) 2019-11-28
EP3605542A4 (en) 2020-05-20
JP7043515B2 (ja) 2022-03-29
BR112019021554B1 (pt) 2024-02-27
KR20190126888A (ko) 2019-11-12
US20200066330A1 (en) 2020-02-27
WO2018188085A1 (zh) 2018-10-18
BR112019021554A2 (pt) 2020-05-12
EP3605542A1 (en) 2020-02-05

Similar Documents

Publication Publication Date Title
KR102258360B1 (ko) 메모리 리프레시 기술 및 컴퓨터 시스템
US11705180B2 (en) Memory refresh technology and computer system
US10691344B2 (en) Separate memory controllers to access data in memory
US9940991B2 (en) Memory device and memory system performing request-based refresh, and operating method of the memory device
US10268382B2 (en) Processor memory architecture
US20070083701A1 (en) Power throttling in a memory system
US10908839B2 (en) Storage device throttling amount of communicated data depending on suspension frequency of operation
WO2019141050A1 (zh) 一种刷新处理方法、装置、系统及内存控制器
WO2022155970A1 (zh) 一种内存控制方法及内存控制装置
CN110556139B (zh) 用以控制存储器的电路及相关的方法
WO2022178772A1 (zh) 一种存储器的刷新方法、存储器、控制器及存储系统
CN111158585B (zh) 一种内存控制器刷新优化方法、装置、设备和存储介质
EP4174666A1 (en) Memory management technology and computer system
KR20170093053A (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
GRNT Written decision to grant