KR20160123985A - 다이내믹 랜덤 액세스 메모리 모듈 및 그것의 리프레쉬 방법 - Google Patents

다이내믹 랜덤 액세스 메모리 모듈 및 그것의 리프레쉬 방법 Download PDF

Info

Publication number
KR20160123985A
KR20160123985A KR1020160027113A KR20160027113A KR20160123985A KR 20160123985 A KR20160123985 A KR 20160123985A KR 1020160027113 A KR1020160027113 A KR 1020160027113A KR 20160027113 A KR20160027113 A KR 20160027113A KR 20160123985 A KR20160123985 A KR 20160123985A
Authority
KR
South Korea
Prior art keywords
bank
refresh
banks
dram module
farthest
Prior art date
Application number
KR1020160027113A
Other languages
English (en)
Other versions
KR102308224B1 (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 KR20160123985A publication Critical patent/KR20160123985A/ko
Application granted granted Critical
Publication of KR102308224B1 publication Critical patent/KR102308224B1/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/40615Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
    • 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
    • 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/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4076Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4096Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches 
    • 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
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Power Engineering (AREA)
  • Dram (AREA)
  • Databases & Information Systems (AREA)

Abstract

본 발명은 DRAM 모듈에 관한 것으로, DRAM 모듈은 뱅크들 각각이 데이터를 저장하는 복수의 뱅크들, DRAM(dynamic Random Access Memory) 모듈에 있는 상기 복수의 뱅크들 중 하나를 리프레쉬하는 리프레쉬 엔진, 그리고 상기 DRAM 모듈에 있는 상기 복수의 뱅크들 중 어떤 뱅크가 리프레쉬를 하기 위한 뱅크인지를 상기 리프레쉬 엔진에게 알려주는 스마트 리프레쉬 컴포넌트를 포함하되, 상기 스마트 리프레쉬 컴포넌트는, 상기 DRAM 모듈에 있는 상기 복수의 뱅크들 중 가장 먼 뱅크를 식별하기 위한 파디스트(farthest) 뱅크 테이블, 상기 DRAM 모듈에 있는 상기 복수의 뱅크들에 있는 어떤 뱅크들이 리프레쉬되었는지를 식별하기 위한 리프레쉬 상태 테이블, 그리고 상기 DRAM 모듈 및 상기 리프레쉬 상태 테이블에 대한 트랜잭션 큐를 사용하여 상기 파디스트 뱅크 테이블에 있는 가장 먼 뱅크를 식별하기 위한 로직을 포함한다.

Description

다이내믹 랜덤 액세스 메모리 모듈 및 그것의 리프레쉬 방법{DYNAMIC RANDOM ACCESS MEMORY MODULE AND REFRESHING METHOD THEROF}
본 발명은 반도체 장치에 관한 것으로, 보다 구체적으로는 일반적인 메모리 동작들에 대한 영향을 최소화하는 리프레쉬 동작을 수행하는 DRAM 모듈에 관한 것이다.
DRAM(Dynamic Random Access Memory)는 현재 컴퓨터 시스템들에서 사용되는 메모리의 한 형태이다. DRAM은 데이터를 저장하는 회로들의 일부로서 커패시터를 사용한다. 커패시터는 이상적이지 않기 때문에, 결국에는 저장된 전하를 잃을 것이다. 만약 DRAM의 커패시터가 전하를 충분히 잃는다면, DRAM에 저장된 데이터는 손실될 것이다.
이 문제를 해결하기 위해, DRAM은 그것이 저장하는 데이터를 리프레쉬할 수 있다. 본질적으로, 모든 데이터는 DRAM으로부터 독출되고, 그 다음 다시 기입된다. DRAM에 데이터 값들을 다시 기입하는 것에 의해, 커패시터들은 재충전되고, 그리고 데이터의 저장이 지속될 수 있다.
데이터를 리프레쉬하는 것은 그 데이터를 DRAM으로부터 독출하는 것을 필요로 하므로, 리프레쉬 동작은 DRAM의 커패시터들이 너무 많은 전하들을 잃기 전에 이루어질 필요가 있다. 커패시터들이 너무 많은 전하를 잃기까지 걸리는 시간은 DRAM의 구현 예에 따라 다르다. 하나의 기준에서, 리프레쉬는 매 64 ms(millisecond)마다 이루어지도록 계획된다.
그러나 리프레쉬 동작이 DRAM으로부터 데이터를 독출 및 기입하는 동작을 필요로 하기 때문에, 리프레쉬를 수행하는 것은 메모리를 사용하는 다른 동작들에 인터럽트를 발생시킬 수 있다. 예를 들어, 리프레쉬의 발생이 필요한 때에 어플리케이션이 DRAM으로부터 일부 데이터를 독출하여야 할 수 있다. 이 경우, 읽기 동작은 리프레쉬가 완료될 때까지 반드시 대기하여야 한다. 만약 그렇지 않다면, 데이터 값들이 손실될 것이다. 이러한 지연은 DRAM의 특정한 구현 예에서는 사소한 문제가 아닐 수 있다. 리프레쉬 동작에 의해 발생하는 지연은 18.5% 이상일 수 있다. 리프레쉬에 의해 발생하는 지연은 DRAM의 집적도 및 동작의 속도에 따라 증가할 것이다.
리프레쉬 동작이 DRAM에 미치는 영향을 감소시키는 방법에 대한 필요성은 여전히 남아있다.
본 발명은 DRAM의 리프레쉬 동작이 DRAM의 다른 동작들에 미치는 영향을 감소시키는 DRAM 모듈 및 그것의 리프레쉬 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 DRAM 모듈은 뱅크들 각각이 데이터를 저장하는 복수의 뱅크들, DRAM 모듈에 있는 복수의 뱅크들 중 하나를 리프레쉬하는 리프레쉬 엔진, 그리고 DRAM 모듈에 있는 복수의 뱅크들 중 어떤 뱅크가 리프레쉬를 하기 위한 뱅크인지를 리프레쉬 엔진에게 알려주는 스마트 리프레쉬 컴포넌트를 포함하되, 스마트 리프레쉬 컴포넌트는, DRAM 모듈에 있는 복수의 뱅크들 중 가장 먼 뱅크를 식별하기 위한 파디스트(farthest) 뱅크 테이블, DRAM 모듈에 있는 복수의 뱅크들에 있는 어떤 뱅크들이 리프레쉬되었는지를 식별하기 위한 리프레쉬 상태 테이블, 그리고 DRAM 모듈 및 리프레쉬 상태 테이블에 대한 트랜잭션 큐를 사용하여 파디스트 뱅크 테이블에 있는 가장 먼 뱅크를 식별하기 위한 로직을 포함한다.
실시 예로서, 가장 먼 뱅크를 식별하기 위한 로직은 마지막으로 접근된 뱅크의 리프레쉬를 제안하기 위한 시간 기반 리프레쉬 회로를 포함한다.
실시 예로서, 시간-기반 리프레쉬 회로는 DRAM 모듈 및 리프레쉬 상태 테이블에 대한 트랜잭션 큐를 사용하여 파디스트 뱅크 테이블에 있는 마지막으로 접근된 뱅크를 식별하기 위한 로직을 포함한다.
실시 예로서, 가장 먼 뱅크를 식별하기 위한 로직은 최소 접근 빈도수(least frequently accessed) 뱅크의 리프레쉬를 제안하기 위한 주파수 기반 리프레쉬 회로를 포함한다.
실시 예로서, 주파수-기반 리프레쉬 회로는 DRAM 모듈 및 리프레쉬 상태 테이블에 대한 트랜잭션 큐를 사용하여 파디스트 뱅크 테이블에 있는 최소 접근 빈도수 뱅크(least-frequently-accessed bank)를 식별하기 위한 로직을 포함한다.
실시 예로서, 스마트 리프레쉬 컴포넌트는 리프레쉬 인터벌의 마지막에서 리프리쉬 상태 테이블을 리셋하기 위한 리셋 로직을 더 포함한다.
실시 예로서, DRAM 모듈은 동기식이다.
실시 예로서. DRAM 모듈은 트랜잭션 기반이다.
실시 예로서, 로직은 리프레쉬 카운터로부터의 리프레쉬 트리거에 응답한다.
본 발명의 실시 예에 따른 리프레쉬 방법은, 트랜잭션 큐에 있는 트랜잭션들의 집합으로부터 뱅크들의 리스트에 접근하는 단계, 뱅크들의 리스트를 사용하여 DRAM 모듈의 복수의 뱅크들 중 가장 먼 뱅크를 결정하는 단계, 그리고 가장 먼 뱅크를 리프레쉬하는 단계를 포함하되, 뱅크들의 리스트는 DRAM 모듈의 복수의 뱅크들로부터 뱅크들을 식별하고, 복수의 뱅크들 각각은 데이터를 저장하는 방법.
실시 예로서, 가장 먼 뱅크가 리프레쉬되었음을 나타내는, 가장 먼 뱅크와 연관되는 리프레쉬된 플래그를 설정하는 단계를 더 포함한다.
실시 예로서, 가장 먼 뱅크를 결정하는 단계는 뱅크들의 리스트를 사용하여 DRAM 모듈의 복수의 뱅크들 중 가장 먼 뱅크를 결정하는 단계를 포함하고, 가장 먼 뱅크는 리프레쉬된 것으로 플래그되지 않는다.
실시 예로서, 리프레쉬 인터벌이 끝난 경우 DRAM 모듈의 복수의 뱅크들 각각에 대해 리프레쉬된 플래그들을 재설정하는 단계를 더 포함한다.
실시 예로서, 뱅크들의 리스트를 사용하여 DRAM 모듈의 복수의 뱅크들 중 가장 먼 뱅크를 결정하는 단계는 뱅크들의 리스트를 사용하여 DRAM 모듈의 복수의 뱅크들 중 마지막으로 접근된 뱅크로서 가장 먼 뱅크를 결정하는 단계를 포함한다.
실시 예로서, 뱅크들의 리스트를 사용하여 DRAM 모듈의 복수의 뱅크들 중 마지막으로 접근된 뱅크로서 가장 먼 뱅크를 결정하는 단계는, 트랜잭션 큐에 있는 각 트랜잭션을 무슨 뱅크에서 사용하는지를 결정하는 단계, 그리고 최소 접근 빈도수 뱅크로서 트랜잭션 큐의 헤드(head)로부터 가장 먼 트랜잭션에서 첫 번째로 사용된 뱅크를 선택하는 단계를 포함한다.
실시 예로서, 뱅크들의 리스트를 사용하여 DRAM 모듈에 있는 복수의 뱅크들 중 가장 먼 뱅크를 결정하는 단계는, 뱅크들의 리스트를 사용하여 DRAM 모듈에 있는 복수의 뱅크들 중 최소 접근 빈도수 뱅크로서 가장 먼 뱅크를 결정하는 단계를 포함한다.
실시 예로서, 뱅크들의 리스트를 사용하여 DRAM 모듈에 있는 복수의 뱅크들 중 최소 접근 빈도수 뱅크로서 가장 먼 뱅크를 결정하는 단계는, DRAM 모듈에 있는 복수의 뱅크들의 각 뱅크가 트랜잭션 큐의 트랜잭션에 몇 회 사용되었는지를 카운트하는 단계, 그리고 최소 접근 빈도수 뱅크로서 가장 낮은 카운트를 가지는 뱅크를 선택하는 단계를 포함한다.
실시 예로서, 뱅크들의 리스트를 사용하여 DRAM 모듈에 있는 복수의 뱅크들 중 가장 먼 뱅크를 결정하는 단계는, 뱅크들의 리스트에는 없는 DRAM 모듈에 있는 복수의 뱅크들 중 제 1 뱅크를 선택하는 단계 그리고 가장 먼 뱅크로서 제 1 뱅크를 선택하는 단계를 포함한다.
실시 예로서, 가장 먼 뱅크를 리프레쉬하는 단계는, DRAM 모듈의 복수의 뱅크들 중 가장 먼 뱅크를 파디스트 뱅크 테이블에 있는 저장하는 단계 그리고 파디스트 뱅크 테이블을 사용하여 가장 먼 뱅크를 리프레쉬하도록 리프레쉬 엔진에 지시하는 단계를 포함한다.
실시 예로서, 가장 먼 뱅크를 리프레쉬하는 단계는 리프레쉬 카운터로부터의 리프레쉬 트리거에 응답하여 가장 먼 뱅크를 리프레쉬하는 단계를 포함한다.
본 발명은 리프레쉬 동작에 따른 DRAM의 동작 지연을 감소시키는 효과가 있다.
도 1a 및 1b는 동기식 및 트랜잭션 기반 DRAM 모듈들을 위한 인-모듈 리프레쉬 엔진들을 보여주는 도면이다.
도 2는 도 1a 및 1b의 DRAM 모듈의 구체적인 구성을 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른, DRAM 모듈을 보여주는 도면이다
도 4는 도 3의 스마트 리프레쉬 컴포넌트의 구체적인 구성을 보여주는 도면이다.
도 5는 도 4의 리프레쉬 상태 테이블의 구체적인 구성을 보여주는 도면이다.
도 6은 본 발명의 실시 예에 따른, 도 4의 파디스트 뱅크 테이블의 구체적인 구성을 보여주는 도면이다.
도 7은 본 발명의 다른 실시 예에 따른, 도 4의 파디스트 뱅크 테이블의 구체적인 구성을 보여주는 도면이다.
도 8은 도 3의 DRAM 모듈을 포함하는 컴퓨터 시스템을 보여주는 도면이다.
도 9는 도 3의 DRAM 모듈의 뱅크의 스마트 리프레쉬를 수행하기 위한 절차의 흐름을 보여주는 흐름도이다.
도 10a 및 10b는 도 3의 DRAM 모듈에서 리프레쉬를 위해 가장 먼 뱅크를 선택하기 위한 절차의 흐름을 보여주는 흐름도이다.
도 11은 도 4의 파디스트 뱅크 테이블을 업데이트하기 위한 절차의 흐름을 보여주는 흐름도이다.
도 1a 및 1b는 본 발명의 실시 예에 따른 DRAM(105)을 보여준다. DRAM(105)은 리프레쉬 엔진(115)을 포함할 수 있는, 버퍼 칩(110, 때로는 미디어 컨트롤러로 불리는)을 포함할 수 있다. 리프레쉬 엔진(115)은 DRAM(105)에 저장된 데이터를 리프레쉬한다. DRAM(105)은 프로세서(125)의 일부로서 도 1a 및 1b에 도시된, 메모리 컨트롤러(120)와 통신할 수 있다. 도 1a 및 1b 사이의 차이점은 도 1a는 동기식 DRAM 모듈을 보여주는 반면, 도 1b는 트랜잭션 기반 DRAM 모듈을 보여주는 점이다. 모듈들은 그것들의 타이밍 및 그것들이 어떻게 메모리 컨트롤러(120)와 통신하는지가 서로 다르다. 그러나 리프레쉬는 두 타입의 DRAM 모듈들 모두에서 발생한다.
본 발명의 다른 실시 예에서는, 리프레쉬 엔진(115)은 필수적으로 DRAM(105)과 인-모듈이기 보다는, 메모리 컨트롤러(120)의 일부일 수 있다. 인-모듈 리프레쉬 엔진(115)의 이점은 인-모듈 리프레쉬는 디자인 유연성을 개선할 수 있고 그리고 성능을 잠재적으로 개선할 수 있는 점이다. 추가로, 도 1a 및 도 1b는 프로세서와 통합된 메모리 컨트롤러(120)를 보여준다. 그러나 본 발명의 다른 실시 예에서, 메모리 컨트롤러(120)는 프로세서(125)와 분리될 수 있다.
DRAM 모듈(105)은 다른 그래뉼래리티(granularity)들로 리프레쉬될 수 있다. 예컨대, 일부 DRAM 모듈들은 리프레쉬 명령이 발행되는 경우 모든 뱅크들이 동시에 리프레쉬되는, 올-뱅크 리프레쉬(all-bank refresh)를 수행할 수 있다. 다른 DRAM 모듈들은 퍼-뱅크 리프레쉬(per-bank refresh)를 수행할 수 있다. 퍼-뱅크 리프레쉬를 사용하는 경우, 단지 한번에 하나의 뱅크가 리프레쉬된다. 또 다른 DRAM 모듈들은 올-뱅크 리프레쉬 또는 퍼-뱅크 리프레쉬 중 하나를 수행할 수 있다.
리프레쉬 명령이 발행된 경우, 리프레쉬되는 뱅크(들)은 사용할 수 없다. 따라서, 올-뱅크 리프레쉬가 사용되는 경우, DRAM 모듈(105)은 리프레쉬가 완료될 때까지 조금도 액세스될 수 없다. 퍼-뱅크 리프레쉬를 사용하는 것은 숨겨둔(hide) 리프레쉬 동작이 가능한 이점을 가진다. 여기에서, "숨겨둔" 리프레쉬 동작은 DRAM 모듈(105)이 그 DRAM 모듈(105)의 다른 뱅크에 접근하기 위한 데이터 요청들에 응답하고 그 요청들을 처리할 수 있음을 의미한다. 프로세서(125)에서 구동하는 임의의 어플리케이션들에 관한 한, 일반적으로 리프레쉬 명령은 어플리케이션이 DRAM 모듈(105)에 액세스할 수 없는 경우 한 번에 수행되는 것으로 나타난다. 그러나, 퍼-뱅크 리프레쉬는 단지 한번에 하나의 뱅크를 리프레쉬하기 때문에, 더 많은 리프레쉬 커맨드들이 DRAM 모듈(105)을 리프레쉬하기 위해 발행되어야 한다. 퍼-뱅크 리프레쉬를 수행하는 DRAM 모듈(105)은 특정한 순서(즉, 라운드-로빈(round-robin))로 뱅크들을 리프레쉬한다.
DRAM 모듈(105)의 뱅크들을 리프레쉬하기 위해 라운드-로빈 스케쥴링과 같은, 특정한 순서를 사용하는 것은 어플리케이션들로부터 리프레쉬 사실을 숨기는데 도움이 될 수 있다. 그러나 리프레쉬되는 뱅크들이 액세스될 수 없음을 보장하지는 못한다. 사실, 최악의 경우에는, 퍼-뱅크 리프레쉬는 올-뱅크 리프레쉬보다 훨씬 더 어플리케이션의 성능을 감소시킬 수 있다. 예를 들어, DRAM 모듈(105)이 64ms(millisecond)의 리프레쉬 인터벌을 가지는 4개의 뱅크들을 포함하고, 그리고 메모리는 133MHz에서 동작하는 것으로 가정하자. 이것은 리프레쉬 명령이 단지 하나의 뱅크가 리프레쉬되거나 또는 모든 뱅크들이 리프레쉬되는 것과는 관계없이 4 클록 사이클((1.33×108)×(30×10-9)=4)을 필요로 함을 의미한다.
만약 DRAM 모듈(105)이 올-뱅크 리프레쉬를 수행하는 경우, 모든 뱅크들은 4 클록 사이클 동안은 사용할 수 없다. 이 사이클 동안은 어떤 어플리케이션 데이터도 거부된다. 총 4개의 뱅크들이 있기 때문에, 모든 뱅크를 리프레쉬하기 위해 필요한 총 시간은 16 클록 사이클일 것이다. 그러나 각 뱅크 리프레쉬 커맨드가 어플리케이션이 리프레쉬되는 뱅크에 있는 데이터에 액세스할 필요가 있는 바로 전에 발행되는 상황을 고려하자. 어플리케이션은 리프레쉬 인터벌 당 16 사이클까지 지연될 것이다. 이것은 실제로 인-오더(in-order) 퍼-뱅크 리프레쉬가 올-뱅크 리프레쉬보다 어플리케이션에 대한 성능을 악화시키는 결과를 가져올 수 있다.
아웃-오브-오더(out-of order) 퍼-뱅크 리프레쉬를 수행하기 위한 하나의 방법은 리프레쉬 명령이 발행될 때마다 리프레쉬를 위한 뱅크를 임의로 선택하는 것이다. 그러나 임의의 순서는 인-오더 퍼-뱅크 리프레쉬를 수행하는 것에 비해 어플리케이션의 개선된 성능을 더 이상 보장하지 못한다.
올-뱅크 리프레쉬를 통해 DRAM 모듈(105)의 응답성을 일반적으로 개선하는 방식으로 퍼-뱅크 리프레쉬가 어떻게 수행될 수 있는지를 설명하기 전에, DRAM 모듈(105)을 빠르고 하이-레벨로 리뷰하는 것이 가치가 있다.
도 2는 도 1a 및 1b의 DRAM 모듈의 구체적인 구성을 보여주는 도면이다. 도 2에서 도시되었듯이, DRAM 모듈(105)은 뱅크들(205-1, 205-2, 205-3, 및 205-4)과 같은, 많은 뱅크들을 포함할 수 있다. 뱅크는 일반적으로 활성화될 수 있고, 읽혀질 수 있고, 충전 등이 될 수 있는 메모리 어레이들의 집합으로 간주될 수 있다. 도 2는 4개의 뱅크들을 포함하는 DRAM 모듈(105)을 도시하지만, DRAM 모듈(105)은 원하는 만큼의 어떤 수의 뱅크들도 포함할 수 있다. 물론, 만약 DRAM 모듈(105)이 단지 하나의 뱅크만을 가진다면, 퍼-뱅크 리프레쉬와 올-뱅크 리프레쉬 사이에는 다른 점이 없을 것이고, 그래서 이 논의가 의미 있기 위해 DRAM 모듈(105)이 적어도 2개의 뱅크들을 포함하는 것으로 간주된다.
DRAM 모듈(105)은 또한 어떤 데이터가 뱅크들(205-1, 205-2, 205-3, 및 205-4)로의 입력인지 그리고 뱅크들(205-1, 205-2, 205-3, 및 205-4)로부터의 출력인지를 관리하는데 사용될 수 있는 멀티플렉서/디멀티플렉서(210), 그리고 DRAM 모듈(105)에 대한 입력 및 출력 기능을 제공하는 I/O 모듈(215)를 포함할 수 있다.
도 3은 본 발명의 실시 예에 따른 DRAM 모듈(105)을 보여준다. 이제 본 발명의 일부 실시 예에 따른 아웃-오브-오더 퍼-뱅크 리프레쉬가 어떻게 하이드(hide) 리프레쉬 동작들에 사용되는지로 돌아가자. 도 1a 및 1b와의 비교와 같이, DRAM 모듈(105), 더 구체적으로, 본 발명의 일부 실시 예에 따른 버퍼 칩(110)은 스마트 리프레쉬 컴포넌트(305)를 포함할 수 있다. 스마트 리프레쉬 컴포넌트(305)는 어떤 뱅크가 어플리케이션들로부터 숨겨질 가능성이 가장 높은지를 리프레쉬 엔진(115)에게 알려준다(또는, 다른 방식으로, 어떤 뱅크가 리프레쉬 명령을 겪는 것에 의해 어플리케이션에 영향을 줄 가능성이 가장 적은지를).
도 4는 도 3의 스마트 리프레쉬 컴포넌트(305)의 예시적인 실시 예의 구체적인 구성을 보여준다. 도 4에서, 스마트 리프레쉬 컴포넌트(305)는 뱅크 ID 마스크(405), 뱅크 테이블(410), 로직(415), 리프레쉬 상태 테이블(420), 및 파디스트 뱅크 테이블(425)를 포함하는 것으로 도시되었다 트랜잭션 큐(430)는 DRAM 모듈(105)에 대한 펜딩(pending) 트랜잭션들의 리스트를 포함할 수 있다. 도 4에서, 트랜잭션 큐(430)는 8개의 트랜잭션들(435-1, 435-2, 435-3, 435-4, 435-5, 435-6, 435-7, 및 435-8)을 포함하는 것으로 도시되었지만, 트랜잭션 큐(430)에 임의의 수의 트랜잭션이 있을 수도 있다. 트랜잭션 큐(430)는 8개의 트랜잭션들이 단지 예시적임을 보여준다. 이러한 트랜잭션들 각각은 DRAM 모듈(105)의 일부 뱅크의 메모리 어드레스에 액세스한다. 이러한 8개의 트랜잭션들과 연관된 뱅크들은 뱅크 ID들(440-1, 440-2, 440-3, 440-4, 440-5, 440-6, 440-7, 및 440-8)로서 뱅크 ID 테이블(410)에 도시되었다. 따라서, 예를 들어, 트랜잭션(435-1)은 뱅크 0(205-1)에 액세스하고, 트랜잭션들(435-2, 435-3, 435-4, 및 435-5)은 뱅크 1(205-2)에 각각 액세스하고, 트랜잭션들(435-6 및 435-8)은 뱅크 2(205-3)에 그리고 트랜잭션(435-7)은 뱅크 3(205-4)에 액세스한다.
뱅크 ID 마스크(405)는 트랜잭션 큐(430)와 인터페이스할 수 있고, 트랜잭션 큐(430)의 펜딩 트랜잭션들에 액세스할 수 있고, 그리고 어떤 뱅크들이 그러한 트랜잭션들에 의해 관련되었는지를 결정할 수 있다. 뱅크 ID 마스크(405)는 뱅크 ID테이블(410)에 있는 그러한 뱅크 ID들을 저장할 수 있다. 뱅크 ID 마스크(405) 동작들은 DRAM 모듈(105)의 구현 예에 의존할 수 있다. 예를 들어, 본 발명의 일 실시 예에서, 뱅크 ID 마스크(405)는 그 트랜잭션에서 사용된 메모리 어드레스로부터 특정 비트들을 마스킹하는 것에 의해 그 트랜잭션들에서 사용된 뱅크들을 결정할 수 있다. 어떤 뱅크들이 트랜잭션 큐(430)의 트랜잭션들에 의해 사용되는지에 관한 이 정보는 뱅크 ID 테이블(410)에 저장될 수 있다. 본 발명의 다른 실시 예에서, 뱅크 ID 마스크(405)는 무슨 뱅크가 특정 트랜잭션에 의해 관련되는지를 결정하기 위해 룩업 테이블을 사용할 수 있다. 기술분야에서 통상의 기술자는 다른 방법들로 어떤 뱅크 ID 마스크가 동작할 수 있는지를 알 수 있을 것이다.
로직(415)은 아웃-오브-오더 퍼-뱅크 리프레쉬를 위해 뱅크를 선택하기 위한 특정 알고리즘을 구현할 수 있다. 로직(415)은 리프레쉬를 위해 리프레쉬 엔진(115)에 제안할 뱅크를 선택하기 위해 리프레쉬 상태 테이블(420)과 뱅크 ID 테이블(410)의 정보를 사용할 수 있다. 리프레쉬 상태 테이블(420)은 현재 리프레쉬 인터벌 동안 이미 리프레쉬된 뱅크들의 리스트를 저장할 수 있다. 파디스크 뱅크 테이블(425)은 어떤 뱅크가 리프레쉬 엔진(115)에 의해 리프레쉬를 위해 제안되었는지를 식별할 수 있다.
이러한 구성요소들에 더하여 도 4는 또한 리프레쉬 카운터(445)와 리셋 로직(450)을 보여준다. 리프레쉬 카운터(445)는 DRAM 모듈(105)의 뱅크의 리프레쉬를 트리거하기 위해 트리거 신호를 로직(415)에 전송할 수 있다. 리셋 로직(450)은 리프레쉬 인터벌이 완료된 후 스마트 리프레쉬 컴포넌트(305)(특히, 리프레쉬 상태 테이블(420)를 리셋할 수 있다. 리프레쉬 상태 테이블(420)을 리셋하는 것은 DRAM 모듈(105)의 어떤 뱅크가 이미 리프레쉬되었는지를 나타내는 모든 플래그들을 삭제하는 것을 포함한다.
본 발명의 다른 실시 예들에서, 로직(415)은 다른 회로망을 사용하여 리프레쉬를 위한 다른 뱅크들을 제안할 수 있다. 도 6 및 7은 본 발명의 다양한 실시 예들에서 사용되는, 2개의 서로 다른 파디스트 뱅크 테이블들을 도시한다. 이러한 다른 파디스트 뱅크 테이블들(425)은 본 발명의 다른 실시 예들을 구현하기 위해 다른 로직들(415)을 사용할 수 있다. 로직(415)이 어떻게 다양한 파디스트 뱅크 테이블들(425)을 구현할 수 있는지에 대한 상세한 설명은 도 6 및 7을 참조하여 아래에서 설명된다.
도 5는 본 발명의 실시 예에 따른, 도 4의 예시적인 리프레쉬 상태 테이블(420)의 구체적인 구성을 보여준다. 도 5에서, 리프레쉬 상태 테이블(420)은 뱅크 ID들(505, 510, 515, 및 520), 및 참/거짓 플래그들(525, 530, 535, 및 540)을 포함할 수 있다. 도 5가 리프레쉬 상태 테이블(420)을 4개의 뱅크들을 포함하는 것으로 보여주지만, 기술분야의 통상의 기술자는 리프레쉬 상태 테이블(420)이 어떤 수의 뱅크들도 포함할 수 있음을 알 수 있을 것이다. 따라서, 도 5의 리프레쉬 상태 테이블(420)은 현재의 리프레쉬 인터벌에서 단지 뱅크 0(엔트리 505)이 지금까지 리프레쉬 되었음을 보여준다. 리프레쉬 상태 테이블(420)은 DRAM 모듈(105)의 어떤 개별적인 뱅크들이 현재의 리프레쉬 인터벌 동안 리프레쉬 되었음을 보여주기 때문에, 리프레쉬 상태 테이블(420)에 있는 뱅크들의 수는 DRAM 모듈(105)에 있는 뱅크들의 수와 일치할 것이다.
도 6은 본 발명의 실시 예에 따른, 도 4의 예시적인 파디스트 뱅크 테이블(425)의 구체적인 구성을 보여준다. 도 6에서, 파디스트 뱅크 테이블(425)은 라스트 액세스드 뱅크 테이블(Last Accessed Bank Table, 605)로 도시되었다. 도 6에서 도시된 본 발명의 실시 예에서, 라스트 액세스드 뱅크 테이블(605)은 트랜잭션 큐(430)에 있는 현재 트랜잭션들을 사용하여 액세스될 마지막 뱅크를 식별한다. 로직(415)이 라스트 액세스드 뱅크 테이블(605)을 사용하는 회로망을 포함하는 경우, 로직(415)은 시간 기반 리프레쉬 회로 또는 시간 기반 리프레쉬 알고리즘을 구현하는 것으로 언급될 수 있다.
라스트 액세스드 뱅크 테이블(605)이 어떻게 사용될 수 있는지의 예시로서, 도 4로 돌아가서, 트랜잭션(435-1)이 다음에 수행될 첫 번째 현재 펜딩 트랜잭션이고, 그리고 트랜잭션(435-8)이 수행될 마지막 현재 펜딩 트랜잭션이라고 가정하자. 다른 방법으로, 트랜잭션 큐(430)의 헤드가 트랜잭션 큐(430)의 탑에 있다고 가정하자. 뱅크 ID 테이블(410)은 대응하는 트랜잭션들에 대한 뱅크 ID들을 저장한다. 이것은 트랜잭션(435-1)이 뱅크 0(엔트리 440-1)을 사용하고, 트랜잭션(435-2)가 뱅크 1(엔트리 440-2)를 사용함을 의미한다. 뱅크 ID 테이블(410)의 빠른 스캔은 뱅크 3이 트랜잭션 큐(430)의 트랜잭션에서 사용될 마지막 뱅크임을 보여준다. 뱅크 3(엔트리 440-7)는 트랜잭션(435-7)에서 사용된다. 따라서, 뱅크 3은 마지막으로 액세스된 뱅크로 식별될 수 있다.
도 6의 라스트 액세스드 뱅크 테이블(605)은 이러한 상태를 반영한다. 뱅크들 0(엔트리 610), 1(엔트리615), 및 2(엔트리 620)는 FALSE 상태(각각 엔트리 625, 630, 및 635)로)로 모두 플래그 되었다. 단지 뱅크 3(엔트리 640)이 TRUE 상태(엔트리 645)로 플래그 되었다. 이것은 리프레쉬 엔진(115)에게 어떤 뱅크가 마지막으로 액세스된 뱅크인지를 알려주고, 따라서 그것의 리프레쉬가 영향을 줄 가능성이 가장 낮은 뱅크가 DRAM 모듈(105)에 액세스한다.
라스트 액세스드 뱅크 테이블(605)이 DRAM 모듈(105)의 어떤 개별적인 뱅크가 리프레쉬를 위해 리프레쉬 엔진(115)에 제안되는지를 저장하기 때문에, 라스트 액세스드 뱅크 테이블(605)의 뱅크들의 수는 DRAM 모듈(105)의 뱅크들의 수와 일치할 것이다.
도 7은 본 발명의 실시 예에 따른, 도 4의 파디스트 뱅크 테이블(425)의 예시의 구체적인 구성을 보여준다. 도 7에서, 파디스트 뱅크 테이블(425)은 최소 접근 빈도수 뱅크 테이블(Least Frequently Accessed Bank Table, 705)로서 도시되었다. 최소 접근 빈도수 뱅크 테이블(705)은 DRAM 모듈(105)의 어떤 뱅크가 가장 적게 액세스된 뱅크인지를 식별할 수 있다. 로직(415)이 최소 접근 빈도수 뱅크 테이블(705)을 사용하기 위한 회로망을 포함하는 경우, 로직(415)은 주파수 기반 리프레쉬 회로 또는 주파수 기반 리프레쉬 알고리즘을 구현하는 것으로 언급될 수 있다.
트랜잭션 큐(430)에서 도시된 8개의 트랜잭션들 중에서, 최소 접근 빈도수 뱅크 테이블(705)이 어떻게 사용될 수 있는지의 예시로서, 뱅크 ID 테이블(410)은 뱅크 0(트랜잭션 435-1)에 액세스하는 하나의 트랜잭션, 뱅크 1(트랜잭션들 435-2, 435-3, 435-4, 및 435-5)에 액세스하는 4개의 트랜잭션들, 뱅크 2(트랜잭션 435-6 및 435-8)에 액세스하는 2개의 트랜잭션들, 및 뱅크 3(트랜잭션 435-7)에 액세스하는 하나의 트랜잭션을 보여준다. 이러한 카운트들은 도 7의 최소 접근 빈도수 뱅크 테이블(705)에 도시되었다. 뱅크 0(엔트리 710)이 1의 카운트(엔트리 715), 뱅크 1(엔트리720)이 4의 카운트(엔트리 725), 뱅크 2(엔트리 730)가 2의 카운트(엔트리 735), 및 뱅크 3(엔트리 740)이 1의 카운트(엔트리 745)를 가진다.
도 7에서, 최소 접근 빈도수 뱅크 테이블(705)은 또한 어떤 뱅크가 리프레쉬를 위해 제안되었는지를 나타낼 수 있는 플래그들을 포함할 수 있다. 도 7에서, 뱅크 3(엔트리 740)은 TRUE 상태(엔트리 750)로 플래그 되었다. 다른 뱅크들은 FALSE 상태(엔트리 755, 760, 및 765)로 플래그 되었다. 도 6에서 도시된 라스트 액세스드 뱅크 테이블(605)과 함께, 최소 접근 빈도수 뱅크 테이블(705)은 어떤 뱅크가 최소 접근 빈도수 뱅크인지를 리프레쉬 엔진(115)에게 알려줄 수 있고, 따라서 그것의 리프레쉬가 영향을 줄 가능성이 가장 낮은 뱅크가 DRAM 모듈(105)에 액세스한다.
도 7의 최소 접근 빈도수 뱅크 테이블(705)은 모두 동일한 최소 카운트를 가지는 2개의 뱅크들을 보여준다. 특히, 뱅크 0(엔트리 710) 및 뱅크 3(엔트리 740) 모두는 1의 카운트(각각 엔트리 715 및 745)를 가진다. 그러나 최소 접근 빈도수 뱅크 테이블(705)은 리프레쉬 엔진(115)에 의해 리프레쉬될 특정 뱅크를 제안하는데 사용될 수 있기 때문에, 최소 접근 빈도수 뱅크 테이블(705)은 리프레쉬를 위해 오직 하나의 뱅크를 제안해야 한다. 따라서, 하나 이상의 뱅크가 최소 카운트를 가지면, 로직(415)은 어떤 원하는 해법을 사용하여 리프레쉬를 위해 리프레쉬 엔진(115)에게 제안할 어떤 뱅크를 선택할 수 있다. 예를 들어, 로직(415)은 가장 낮은 뱅크 수를 가지는 뱅크를 선택하거나, 또는 가장 높은 뱅크 수를 가지는 뱅크를 선택할 수 있다. 또는, 로직(415)은 트랜잭션 큐(430)에 있는 뱅크들 중 마지막으로 액세스된 가장 낮은 카운트를 가지는 뱅크를 선택할 수 있다(상술한 바와 같이, 마지막으로 액세스된 뱅크를 선택하기 위해 사용된 접근법을 미러링하여). 또는, 로직(415)은 뱅크를 랜덤으로 선택할 수 있다. 기술분야에서 통상의 기술자는 로직(415)이 가장 낮은 카운트를 가지는 복수의 뱅크들 중에서 선택할 수 있는 다른 방법들을 알 수 있을 것이다.
그러나 도 7에서, 뱅크 0(엔트리(710)에 비해 뱅크 3(엔트리 740)이 선택된 이유는 간단하고, 그리고 도 5의 리프레쉬 상태 테이블(420)에서 찾을 수 있다. 도 5에서, 뱅크 0(엔트리 505)은 이미 리프레쉬된 것으로 플래그 되었음에 주목하자. 뱅크는 일반적으로 리프레쉬 인터벌 당 한번 리프레쉬되고 그리고 뱅크 0은 현재의 리프레쉬 인터벌에서 이미 리프레쉬되었기 때문에, 로직(415)은 최소 접근 빈도수 뱅크 테이블(705)에서 플래그를 설정할 때 리프레쉬를 위해 뱅크 0을 고려할 필요가 없다.
최소 접근 빈도수 뱅크 테이블(705)가 DRAM 모듈(105)의 어떤 개별적인 뱅크가 리프레쉬를 위해 리프레쉬 엔진(115)에게 제안되었는지를 저장하기 때문에, 최소 접근 빈도수 뱅크 테이블(705)의 뱅크들의 수는 DRAM 모듈(105)의 뱅크들의 수와 일치할 수 있다.
도 4, 6 및 7에서, DRAM 모듈(105)의 모든 뱅크들은 트랜잭션 큐(430)의 일부 트랜잭션에 의해 액세스된다. 그러나 하나의(또는 하나 이상의) 뱅크가 트랜잭션 큐(430)의 어떤 현재의 펜딩 트랜잭션에서도 사용되지 않을 수 있다. 다른 방법으로, 뱅크 ID 테이블(455)에서 리스트되지 않은 하나 이상의 뱅크들이 있을 수 있다. 만약 트랜잭션 큐(430)에 있는 현재의 펜딩 트랜잭션에 액세스되는 것으로 뱅크 ID 테이블(455)에 리스트되지 않은 뱅크가 있다면, 그 뱅크는 로직(415)의 세목(paticulars)에 관계없이, 자동으로 가장 먼 뱅크로 선택될 수 있다. 또 다른 방법으로, 어떠한 펜딩 트랜잭션에 의해서도 액세스되지 않은 어떤 뱅크가 로직(415)이 시간 기반 리프레쉬 회로 또는 주파수 기반 리프레쉬 회로를 구현하는지에 관계없이, 리프레쉬를 위해 선택될 수 있다.
앞서 언급한 바와 같이, 리프레쉬 상태 테이블(420)은 DRAM 모듈(105)의 어떤 개별적인 뱅크들이 현재의 리프레쉬 인터벌 동안 리프레쉬 되었는지를 저장한다. 만약 리프레쉬를 위해 선택될 뱅크가 현재의 리프레쉬 인터벌 동안 이미 리프레쉬되었다면, 그 뱅크는 리프레쉬를 위해 고려되지 않을 것이고, 그 다음으로 가장 먼 뱅크가 선택된다. 어떤 뱅크가 다음으로 가장 먼 뱅크인지는 로직(415)이 시간 기반 리프레쉬 회로 또는 주파수 기반 리프레쉬 회로를 구현하는지에 따라 다르지만, 로직은 이미 리프레쉬된 뱅크(들)이 리프레쉬의 고려의 대상이 아니라고 적용한다.
도 8은 도 3의 DRAM 모듈(105)을 포함하는 컴퓨터 시스템을 보여준다. 도 8에서, 컴퓨터 시스템(805)은 컴퓨터(810), 모니터(815), 키보드(820), 및 마우스(825)를 포함하는 것으로 도시되었다. 기술분야에서 통상이 기술자는 다른 구성요소들이 컴퓨터 시스템(805)에 포함될 수 있음을 알 수 있을 것이다. 예를 들어, 프린터와 같은, 다른 입력/출력 장치들이 포함될 수 있을 것이다. 추가로, 컴퓨터 시스템(805)은 중앙 처리 유닛(120), 메모리 컨트롤러(125), 및 DRAM 모듈(105)과 같은, 통상적인 내부 구성요소들을 포함할 수 있다. 비록 도 8에서 도시되진 않았지만, 기술분야에서 통상의 기술자는 컴퓨터 시스템(805)이 다른 컴퓨터 시스템들과 직접 또는 어떤 타입의 네트워크(미도시)를 통해 상호작용할 수 있음을 알 수 있을 것이다. 결과적으로, 비록 도 8에서 컴퓨터 시스템(805)이 통상적인 데스크탑 컴퓨터로 도시되었지만, 기술분야에서 통상의 기술자는 컴퓨터 시스템(805)이 예컨대, 랩탑 컴퓨터, 타블렛 컴퓨터, PDA(personal digital assistant), 또는 스마트 폰, 등을 포함하는 어떤 타입의 머신 또는 컴퓨팅 장치일 수 있음을 알 수 있을 것이다.
상술한 설명은 DRAM 모듈에서 스마트 리프레쉬를 사용하는데 초점을 맞추었다. 그러나 본 발명의 실시 예는 메모리 모듈이 리프레쉬를 필요로 하는 어떤 상황에도 적용될 수 있다. 따라서, 예를 들어, DRAM이 캐시 또는 버퍼에 사용된다면, 본 발명의 실시 예는 캐시 또는 버퍼의 메모리 모듈과 함께 사용될 수 있다.
도 9는 본 발명의 실시 예에 따른, 도 3의 DRAM 모듈의 뱅크의 스마트 리프레쉬를 수행하기 위한 절차의 흐름도를 보여준다. 도 9의 단계 S110에서, 도 3의 스마트 리프레쉬 컴포넌트(305)는 도 4의 리프레쉬 카운터(445)로부터 아웃-오브 오더 퍼-뱅크 리프레쉬 명령을 트리거하는, 트리거를 수신할 수 있다. 단계 S120에서, 도 3의 스마트 리프레쉬 컴포넌트(305)는 도 4의 뱅크 ID 테이블(410)로부터 뱅크들의 리스트를 액세스할 수 있다. 도 4의 뱅크 ID 테이블(410)에 리스트된 뱅크들은 도 4의 트랜잭션 큐(430)의 트랜잭션들에 의해 사용되는 뱅크들을 식별할 수 있다. 단계 S130에서, 도 3의 스마트 리프레쉬 컴포넌트(305)는 현재의 리프레쉬 인터벌에서 이미 리프레쉬되지 않은, 도 4의 뱅크 ID 테이블(410)로부터 가장 먼 뱅크를 결정할 수 있다. 상술한 바와 같이, 도 3의 스마트 리프레쉬 컴포넌트(305)는 마지막으로 액세스된 뱅크 또는 최소로 액세스된 뱅크와 같은, 가장 먼 뱅크를 결정하기 위해 어떠한 원하는 알고리즘을 사용할 수 있다. 단계 S140에서, 도 1의 리프레쉬 엔진(115)은 도 3의 스마트 리프레쉬 컴포넌트(305)에 의해 제안된, 가장 먼 뱅크를 리프레쉬할 수 있다. 단계 S150에서, 도 3의 스마트 리프레쉬 컴포넌트(305)는 그 뱅크가 리프레쉬되었음을 나타내는 도 4의 리프레쉬 상태 테이블(420)의 플래그를 설졍할 수 있다. 단계 S160에서, 도 3의 스마트 리프레쉬 컴포넌트는 리프레쉬 인터벌이 끝났는지를 결정할 수 있다. 만약 그렇다면, 단계 S170에서, 도 3의 스마트 리프레쉬 컴포넌트(305)는 어떤 뱅크들이 리프레쉬되었는지를 나타내는 도 4의 리프레쉬 상태 테이블(420)의 플래그들을 리셋할 수 있다. 리프레쉬 인터벌이 끝났는지에 관계없이, 컨트롤은 다음 리프레쉬 명령을 처리하기 위해 블록(905)으로 리턴된다.
도 9에서(그리고 아래의 다른 흐름도에서), 본 발명의 일 실시 예가 도시된다. 그러나 기술분야에서 통상의 기술자는 본 발명의 다른 실시 예 또한 블록들의 순서를 변경하거나, 블록들을 생략하거나, 또는 도면들에 도시되지 않은 링크들을 포함하는 것에 의해 가능하다는 것을 알 수 있을 것이다. 흐름도의 그와 같은 모든 변경들은 본 명세서에서 분명히 설명되지 않았더라도 본 발명의 실시 예로서 간주된다.
도 10a 및 10b는 본 발명의 일부 실시 예에 따른, 도 3의 DRAM 모듈에서 리프레쉬를 위해 가장 먼 뱅크를 선택하기 위한 예시적인 절차의 흐름도를 보여주고, 그리고 이는 도 9의 단계 S130에서도 사용될 수 있다. 도 10a에서, 단계 S210에서, 도 3의 스마트 리프레쉬 컴포넌트(305)는 만약 어떤 뱅크가 도 4의 트랜잭션 큐(430)의 어떤 트랜잭션에 사용되지 않았음을 결정할 수 있다. 만약 그렇다면, 단계 S220에서, 도 3의 스마트 리프레쉬 컴포넌트(305)는 리프레쉬를 위해 어떤 트랜잭션에서도 사용되지 않은 뱅크를 그 프로세싱이 종료한 후에 선택할 수 있다.
만약 모든 뱅크가 도 4의 트랜잭션 큐의 적어도 하나의 트랜잭션에 사용된다면, 도 10b의 단계 S310에서, 도 3의 스마트 리프레쉬 컴포넌트(305)는 도 4의 뱅크 ID 테이블(410)에서 마지막으로 액세스된 뱅크를 결정할 수 있다. 도 3의 스마트 리프레쉬 컴포넌트(305)는 트랜잭션에서 사용된 각 뱅크를 결정하고(단계 S311) 그리고 도 4의 트랜잭션 큐(430)의 헤드로부터 가장 멀리 떨어져 사용된 뱅크를 선택하는 것(단계 S312)에 의해 이 결과를 달성할 수 있다. 대안적으로, 단계 S320에서, 도 3의 스마트 리프레쉬 컴포넌트(305)는 도 3의 뱅크 ID 테이블(410)의 최소 접근 빈도수 뱅크를 결정할 수 있다. 도 3의 스마트 리프레쉬 컴포넌트(305)는 각 뱅크가 도 4의 트랜잭션 큐(430)의 트랜잭션들에서 얼마나 사용되었는지를 카운팅하고(단계 S321) 그리고 가장 낮은 카운트를 가지는 뱅크를 선택하는 것(단계 S322)에 의해 이 결과가 달성될 수 있다.
도 3의 스마트 리프레쉬 컴포넌트(305)가 도 4의 트랜잭션 큐(430)의 트랜잭션에서 사용되지 않은 뱅크를 선택하거나 또는 가장 먼 뱅크를 선택하는 것과 관계없이, 도 3의 스마트 리프레쉬 컴포넌트(305)는 선택된 뱅크를 도 1의 스마트 리프레쉬 엔진(115)에게 제안할 수 있다.
도 11은 본 발명의 실시 예에 따른, 도 4의 파디스트 뱅크 테이블을 업데이트하기 위한 예시적인 절차의 흐름도를 보여준다. 단계 S141에서, 도 3의 스마트 리프레쉬 컴포넌트(305)는 도 4의 파디스트 뱅크 테이블(425)에 있는 가장 먼 뱅크를 저장할 수 있다. 그 후 단계 S142에서, 도 1의 리프레쉬 엔진(115)은 제안된 뱅크를 리프레쉬할 수 있다.
아래의 논의는 본 발명의 특정 측면들이 구현되는 적절한 머신 또는 머신들의 간단하고, 일반적인 설명을 제공하기 위한 의도이다. 일반적으로, 머신 또는 머신들은 프로세서들, 메모리 예컨대, RAM(randon access memory), ROM(read-only memory), 또는 다른 상태 저장 매체와 같은 메모리, 스토리지 장치들, 비디오 인터페이스, 및 입력/출력 인터페이스 포트들과 부착되는 시스템 버스를 포함한다. 머신 또는 머신들은 키보드, 마우스, 등과 같은 통상적인 입력 장치들로부터의 입력뿐만 아니라 다른 머신으로부터 직접 수신된 입력, 가상 현실 환경과의 상호작용, 생리학적 피드백, 또는 다른 입력 신호에 의해서도 적어도 부분적으로 제어될 수 있다. 본 명세서에서 사용된 용어 "머신"은 단일 머신, 가상 머신, 또는 통신 가능하게 연결된 머신들의 시스템, 가상 머신들, 또는 함께 동작하는 장치들을 폭넓게 포함할 의도이다. 예시적인 머신들은 개인용 컴퓨터들, 워크스테이션들, 서버들, 포터블 컴퓨터들, 핸드헬드 장치들, 전화기, 타블렛, 등과 같은 컴퓨팅 장치뿐만 아니라 개인 또는 공공 교통수단 예컨대, 자동차, 기차, 택시 등과 같은 운송 장치들 포함한다.
머신 또는 머신들은 프로그램 가능하거나 또는 프로그램 불가능한 로직 장치들 또는 어레이들, ASICs(Application Specific Integrated Circuits), 임베디드 컴퓨터들, 스마트 카드들, 등과 같은 임베디드 컨트롤러들을 포함할 수 있다. 머신 또는 머신들은 하나 이상의 원격 머신들과 네트워크 인터페이스, 모뎀, 또는 다른 통신 연결 수단들을 통하는 것과 같은 하나 이상의 연결들을 사용할 수 있다. 머신들은 물리적 및/또는 인트라넷, 인터넷, LAN(local area network), WAN(wide area network) 등과 같은 논리 네트워크의 방식에 의해 상호 연결될 수 있다. 기술 분야에서 통상의 기술자는 네트워크 통신이 다양한 유선 및/또는 RF(radio frequency), 위성, 초단파, IEEE(Institute of Electrical and Electronics Engineers) 802.11, Bluetooth®, 광학, 적외선, 케이블, 레이저 등을 포함하는 무선 단거리 또는 장거리 반송파 및 프로토콜들을 사용할 수 있음을 알 수 있을 것이다.
본 발명의 실시 예들은 기능들, 절차들, 데이터 구조들, 어플리케이션 프로그램들 등을 참조하거나 또는 그것들과 함께 설명될 수 있다. 연관된 데이터는 예를 들어, RAM, ROM, 등과 같은 휘발성 및/또는 불휘발성 메모리, 또는 다른 저장 매체들에 저장될 수 있고 그리고 하드-드라이브들, 플로피 디스크들, 광학 저장 매체, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생물학적 저장 매체 등을 포함하는 그것들의 연관된 저장 매체에 저장될 수 있다. 연관된 데이터는 물리적 및/또는 논리적 네트워크, 패킷의 형태, 직렬 데이터, 병렬 데이터, 전파 신호들 등을 포함하는 전송 환경을 통해 전달될 수 있고 그리고 압축되거나 또는 암호화된 포맷에서 사용될 수 있다. 연관된 데이터는 분산 환경에서 사용될 수 있고 그리고 머신 액세스를 위해 로컬 및/또는 원격으로 저장될 수 있다.
본 발명의 실시 예들은 하나 이상의 프로세서들에 의해 실행 가능한 명령어들을 포함하는 유형의, 비 일시적 머신 판독가능 매체를 포함할 수 있고, 명령어들은 본 명세서에서 설명된 본 발명의 컨셉에 따른 요소들을 수행하기 위한 명령어들을 포함한다.
도식화된 실시 예들을 참조하여 본 발명의 원리들이 설명되고 그리고 도식화되었지만, 도식화된 실시 예들이 그와 같은 원리들을 벗어나지 않고 배열 및 구체적인 항목에서 수정될 수 있고 그리고 어떠한 원하는 방식으로 조합될 수 있음을 알 수 있을 것이다. 그리고 비록 상술한 논의가 특정한 실시 예들에 초점을 맞추었지만, 다른 구성들도 고려될 수 있다. 특히, 본 명세서에서 "본 발명의 실시 예에 따른"이라는 표현 또는 그와 유사한 표현이 사용되었지만, 이러한 구는 일반적으로 가능한 참조 실시 예를 의미하는 것이지 본 발명을 특정한 실시 예의 구성들로 한정하고자 하는 것은 아니다. 본 명세서에서 사용된 바와 같이, 이러한 용어들은 다른 실시 예들로 조합될 수 있는 동일 또는 다른 실시 예들을 참조할 수 있다.
상술한 도식적인 실시 예들은 본 발명의 컨셉을 제한하는 것으로 이해되어서는 안된다. 비록 몇몇 실시 예들이 설명되었지만, 기술분야에서 통상의 기술자는 본 발명의 이점들 및 새로운 시사를 벗어나지 않고 이러한 실시 예들이 가능한 다양한 수정들을 쉽게 알 수 있을 것이다. 따라서, 모든 그와 같은 수정들은 청구항에 의해 정의되는 본 발명의 컨셉의 범위 내에 포함될 것이다.
본 발명의 실시 예들은 제한 없이 아래의 서술들에 따라 확장될 수 있다.
본 발명의 실시 예에 따른 DRAM 모듈은, 뱅크들 각각이 데이터를 저장하는 복수의 뱅크들, DRAM 모듈에 있는 복수의 뱅크들 중 하나를 리프레쉬하는 리프레쉬 엔진, 그리고 DRAM 모듈에 있는 복수의 뱅크들 중 어떤 뱅크가 리프레쉬를 하기 위한 뱅크인지를 리프레쉬 엔진에게 알려주는 스마트 리프레쉬 컴포넌트를 포함하되, 스마트 리프레쉬 컴포넌트는, DRAM 모듈에 있는 복수의 뱅크들 중 가장 먼 뱅크를 식별하기 위한 파디스트(farthest) 뱅크 테이블, DRAM 모듈에 있는 복수의 뱅크들에 있는 어떤 뱅크들이 리프레쉬되었는지를 식별하기 위한 리프레쉬 상태 테이블, 그리고 DRAM 모듈 및 리프레쉬 상태 테이블에 대한 트랜잭션 큐를 사용하여 파디스트 뱅크 테이블에 있는 가장 먼 뱅크를 식별하기 위한 로직을 포함한다.
실시 예로서, 가장 먼 뱅크를 식별하기 위한 로직은 마지막으로 접근된 뱅크의 리프레쉬를 제안하기 위한 시간 기반 리프레쉬 회로를 포함한다.
실시 예로서, 시간-기반 리프레쉬 회로는 DRAM 모듈 및 리프레쉬 상태 테이블에 대한 트랜잭션 큐를 사용하여 파디스트 뱅크 테이블에 있는 마지막으로 접근된 뱅크를 식별하기 위한 로직을 포함한다.
실시 예로서, 가장 먼 뱅크를 식별하기 위한 로직은 최소 접근 빈도수(least frequently accessed) 뱅크의 리프레쉬를 제안하기 위한 주파수 기반 리프레쉬 회로를 포함한다.
실시 예로서, 주파수-기반 리프레쉬 회로는 DRAM 모듈 및 리프레쉬 상태 테이블에 대한 트랜잭션 큐를 사용하여 파디스트 뱅크 테이블에 있는 최소 접근 빈도수 뱅크(least-frequently-accessed bank)를 식별하기 위한 로직을 포함한다.
실시 예로서, 스마트 리프레쉬 컴포넌트는 리프레쉬 인터벌의 마지막에서 리프리쉬 상태 테이블을 리셋하기 위한 리셋 로직을 더 포함한다.
실시 예로서, DRAM 모듈은 동기식 DRAM 모듈이다.
실시 예로서, DRAM 모듈은 트랜잭션 기반 DDRAM 모듈이다.
실시 예로서, 로직은 리프레쉬 카운터로부터의 리프레쉬 트리거에 응답한다.
본 발명의 실시 예에 따른 컴퓨터 시스템은, 프로세서, DRAM 모듈, 및 프로세서와 DRAM 모듈 사이를 인터페이스하는 메모리 컨트롤러를 포함한다. DRAM 모듈은 뱅크들 각각이 데이터를 저장하는 복수의 뱅크들, DRAM 모듈에 있는 복수의 뱅크들 중 하나를 리프레쉬하는 리프레쉬 엔진, 그리고 DRAM 모듈에 있는 복수의 뱅크들 중 어떤 뱅크가 리프레쉬를 하기 위한 뱅크인지를 리프레쉬 엔진에게 알려주는 스마트 리프레쉬 컴포넌트를 포함하되, 스마트 리프레쉬 컴포넌트는, DRAM 모듈에 있는 복수의 뱅크들 중 가장 먼 뱅크를 식별하기 위한 파디스트(farthest) 뱅크 테이블, DRAM 모듈에 있는 복수의 뱅크들에 있는 어떤 뱅크들이 리프레쉬되었는지를 식별하기 위한 리프레쉬 상태 테이블, 그리고 DRAM 모듈 및 리프레쉬 상태 테이블에 대한 트랜잭션 큐를 사용하여 파디스트 뱅크 테이블에 있는 가장 먼 뱅크를 식별하기 위한 로직을 포함한다.
실시 예로서, 가장 먼 뱅크를 식별하기 위한 로직은 마지막으로 접근된 뱅크의 리프레쉬를 제안하기 위한 시간 기반 리프레쉬 회로를 포함한다.
실시 예로서, 시간-기반 리프레쉬 회로는 DRAM 모듈 및 리프레쉬 상태 테이블에 대한 트랜잭션 큐를 사용하여 파디스트 뱅크 테이블에 있는 마지막으로 접근된 뱅크를 식별하기 위한 로직을 포함한다.
실시 예로서, 가장 먼 뱅크를 식별하기 위한 로직은 최소 접근 빈도수(least frequently accessed) 뱅크의 리프레쉬를 제안하기 위한 주파수 기반 리프레쉬 회로를 포함한다.
실시 예로서, 주파수-기반 리프레쉬 회로는 DRAM 모듈 및 리프레쉬 상태 테이블에 대한 트랜잭션 큐를 사용하여 파디스트 뱅크 테이블에 있는 최소 접근 빈도수 뱅크(least-frequently-accessed bank)를 식별하기 위한 로직을 포함한다.
본 발명의 실시 예에 따른 리프레쉬 방법은, 트랜잭션 큐에 있는 트랜잭션들의 집합으로부터 뱅크들의 리스트에 접근하는 단계, 뱅크들의 리스트를 사용하여 DRAM 모듈의 복수의 뱅크들 중 가장 먼 뱅크를 결정하는 단계, 그리고 가장 먼 뱅크를 리프레쉬하는 단계를 포함하되, 뱅크들의 리스트는 DRAM 모듈의 복수의 뱅크들로부터 뱅크들을 식별하고, 복수의 뱅크들 각각은 데이터를 저장하는 방법.
실시 예로서, 가장 먼 뱅크가 리프레쉬되었음을 나타내는, 가장 먼 뱅크와 연관되는 리프레쉬된 플래그를 설정하는 단계를 더 포함한다.
실시 예로서, 가장 먼 뱅크를 결정하는 단계는 뱅크들의 리스트를 사용하여 DRAM 모듈의 복수의 뱅크들 중 가장 먼 뱅크를 결정하는 단계를 포함하고, 가장 먼 뱅크는 리프레쉬된 것으로 플래그되지 않는다.
실시 예로서, 리프레쉬 인터벌이 끝난 경우 DRAM 모듈의 복수의 뱅크들 각각에 대해 리프레쉬된 플래그들을 재설정하는 단계를 더 포함한다.
실시 예로서, 뱅크들의 리스트를 사용하여 DRAM 모듈의 복수의 뱅크들 중 가장 먼 뱅크를 결정하는 단계는 뱅크들의 리스트를 사용하여 DRAM 모듈의 복수의 뱅크들 중 마지막으로 접근된 뱅크로서 가장 먼 뱅크를 결정하는 단계를 포함한다.
실시 예로서, 뱅크들의 리스트를 사용하여 DRAM 모듈의 복수의 뱅크들 중 마지막으로 접근된 뱅크로서 가장 먼 뱅크를 결정하는 단계는, 트랜잭션 큐에 있는 각 트랜잭션을 무슨 뱅크에서 사용하는지를 결정하는 단계, 그리고 최소 접근 빈도수 뱅크로서 트랜잭션 큐의 헤드(head)로부터 가장 먼 트랜잭션에서 첫 번째로 사용된 뱅크를 선택하는 단계를 포함한다.
실시 예로서, 뱅크들의 리스트를 사용하여 DRAM 모듈에 있는 복수의 뱅크들 중 가장 먼 뱅크를 결정하는 단계는, 뱅크들의 리스트를 사용하여 DRAM 모듈에 있는 복수의 뱅크들 중 최소 접근 빈도수 뱅크로서 가장 먼 뱅크를 결정하는 단계를 포함한다.
실시 예로서, 뱅크들의 리스트를 사용하여 DRAM 모듈에 있는 복수의 뱅크들 중 최소 접근 빈도수 뱅크로서 가장 먼 뱅크를 결정하는 단계는, DRAM 모듈에 있는 복수의 뱅크들의 각 뱅크가 트랜잭션 큐의 트랜잭션에 몇 회 사용되었는지를 카운트하는 단계, 그리고 최소 접근 빈도수 뱅크로서 가장 낮은 카운트를 가지는 뱅크를 선택하는 단계를 포함한다.
실시 예로서, 뱅크들의 리스트를 사용하여 DRAM 모듈에 있는 복수의 뱅크들 중 가장 먼 뱅크를 결정하는 단계는, 뱅크들의 리스트에는 없는 DRAM 모듈에 있는 복수의 뱅크들 중 제 1 뱅크를 선택하는 단계 그리고 가장 먼 뱅크로서 제 1 뱅크를 선택하는 단계를 포함한다.
실시 예로서, 가장 먼 뱅크를 리프레쉬하는 단계는, DRAM 모듈의 복수의 뱅크들 중 가장 먼 뱅크를 파디스트 뱅크 테이블에 있는 저장하는 단계 그리고 파디스트 뱅크 테이블을 사용하여 가장 먼 뱅크를 리프레쉬하도록 리프레쉬 엔진에 지시하는 단계를 포함한다.
실시 예로서, 가장 먼 뱅크를 리프레쉬하는 단계는 리프레쉬 카운터로부터의 리프레쉬 트리거에 응답하여 가장 먼 뱅크를 리프레쉬하는 단계를 포함한다.
결과적으로, 본 명세서에서 설명된 실시 예들에 대한 폭넓고 다양한 순열들의 관점에서, 본 상세한 설명 및 첨부된 도면들은 단지 도식적인 것으로 의도된 것이고, 그리고 본 발명의 컨셉의 범위를 제한하기 위한 것은 아니다. 따라서, 본 발명의 컨셉에 따라 청구하는 것은 아래의 청구항들의 범위 및 사상과 그것의 균등물 로 따라올 수 있는 그와 같은 모든 수정들이다.
105: DRAM 모듈 110: 버퍼 칩
115: 리프레쉬 엔진 120: 프로세서
125: 메모리 컨트롤러 130: 미디어 컨트롤러
205-1, 205-2, 205-3, 205-4: 뱅크
210: 멀티플렉서/디멀티플렉서 215: I/O 모듈
305: 스마트 리프레쉬 컴포넌트 405: 뱅크 ID 마스크
410: 뱅크 ID 415: 로직
420: 리프레쉬 상태 테이블 425: 파디스크 뱅크 테이블
430: 트랜잭션 큐 445: 리프레쉬 카운터
450: 리셋 로직 605: 라스트 액세스드 뱅크 테이블
705: 최소 접근 빈도수 뱅크 테이블 805: 컴퓨터 시스템
810: 컴퓨터 815: 모니터
820: 키보드 825: 마우스

Claims (10)

  1. 뱅크들 각각이 데이터를 저장하는 복수의 뱅크들;
    DRAM(dynamic Random Access Memory) 모듈에 있는 상기 복수의 뱅크들 중 하나를 리프레쉬하는 리프레쉬 엔진; 그리고
    상기 DRAM 모듈에 있는 상기 복수의 뱅크들 중 어떤 뱅크가 리프레쉬를 하기 위한 뱅크인지를 상기 리프레쉬 엔진에게 알려주는 스마트 리프레쉬 컴포넌트를 포함하되,
    상기 스마트 리프레쉬 컴포넌트는,
    상기 DRAM 모듈에 있는 상기 복수의 뱅크들 중 가장 먼 뱅크를 식별하기 위한 파디스트(farthest) 뱅크 테이블;
    상기 DRAM 모듈에 있는 상기 복수의 뱅크들 중 어떤 뱅크들이 리프레쉬되었는지를 식별하기 위한 리프레쉬 상태 테이블; 그리고
    상기 DRAM 모듈 및 상기 리프레쉬 상태 테이블에 대한 트랜잭션 큐를 사용하여 상기 파디스트 뱅크 테이블에 있는 가장 먼 뱅크를 식별하기 위한 로직을 포함하는 DRAM 모듈.
  2. 제 1 항에 있어서,
    상기 가장 먼 뱅크를 식별하기 위한 상기 로직은 마지막으로 접근된 뱅크의 리프레쉬를 제안하기 위한 시간-기반 리프레쉬 회로를 포함하는 DRAM 모듈.
  3. 제 2 항에 있어서,
    상기 시간-기반 리프레쉬 회로는 상기 DRAM 모듈 및 상기 리프레쉬 상태 테이블에 대한 상기 트랜잭션 큐를 사용하여 상기 파디스트 뱅크 테이블에 있는 마지막으로 접근된 뱅크를 식별하기 위한 로직을 포함하는 DRAM 모듈.
  4. 제 1 항에 있어서,
    상기 가장 먼 뱅크를 식별하기 위한 상기 로직은 최소 접근 빈도수(least frequently accessed) 뱅크의 리프레쉬를 제안하기 위한 주파수-기반 리프레쉬 회로를 포함하는 DRAM 모듈.
  5. 제 4 항에 있어서,
    상기 주파수-기반 리프레쉬 회로는 상기 DRAM 모듈 및 상기 리프레쉬 상태 테이블에 대한 상기 트랜잭션 큐를 사용하여 상기 파디스트 뱅크 테이블에 있는 상기 최소 접근 빈도수 뱅크(least-frequently-accessed bank)를 식별하기 위한 로직을 포함하는 DRAM 모듈.
  6. 제 1 항에 있어서,
    상기 스마트 리프레쉬 컴포넌트는 리프레쉬 인터벌의 마지막에 상기 리프리쉬 상태 테이블을 리셋하기 위한 리셋 로직을 더 포함하는 DRAM 모듈.
  7. 트랜잭션 큐에 있는 트랜잭션들의 집합으로부터 뱅크들의 리스트에 접근하는 단계;
    상기 뱅크들의 리스트를 사용하여 DRAM 모듈의 복수의 뱅크들 중 가장 먼 뱅크를 결정하는 단계; 그리고
    상기 가장 먼 뱅크를 리프레쉬하는 단계를 포함하되,
    상기 뱅크들의 리스트는 상기 DRAM 모듈의 복수의 뱅크들로부터 뱅크들을 식별하고, 상기 복수의 뱅크들 각각은 데이터를 저장하는 리프레쉬 방법.
  8. 제 7 항에 있어서,
    상기 가장 먼 뱅크가 리프레쉬되었음을 나타내는 상기 가장 먼 뱅크와 연관되는 리프레쉬된 플래그를 설정하는 단계를 더 포함하는 리프레쉬 방법.
  9. 제 8 항에 있어서,
    상기 가장 먼 뱅크를 결정하는 단계는, 상기 뱅크들의 리스트를 사용하여 상기 DRAM 모듈의 상기 복수의 뱅크들 중 가장 먼 뱅크를 결정하는 단계를 포함하고, 상기 가장 먼 뱅크는 리프레쉬된 것으로 플래그되지 않는 리프레쉬 방법.
  10. 제 8 항에 있어서,
    리프레쉬 인터벌이 끝난 경우, 상기 DRAM 모듈의 복수의 뱅크들 각각에 대해 리프레쉬된 플래그들을 재설정하는 단계를 더 포함하는 리프레쉬 방법.
KR1020160027113A 2015-04-17 2016-03-07 다이내믹 랜덤 액세스 메모리 모듈 및 그것의 리프레쉬 방법 KR102308224B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562149507P 2015-04-17 2015-04-17
US62/149,507 2015-04-17
US14/850,938 US9524769B2 (en) 2015-04-17 2015-09-10 Smart in-module refresh for DRAM
US14/850,938 2015-09-10

Publications (2)

Publication Number Publication Date
KR20160123985A true KR20160123985A (ko) 2016-10-26
KR102308224B1 KR102308224B1 (ko) 2021-10-05

Family

ID=57129359

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160027113A KR102308224B1 (ko) 2015-04-17 2016-03-07 다이내믹 랜덤 액세스 메모리 모듈 및 그것의 리프레쉬 방법

Country Status (2)

Country Link
US (1) US9524769B2 (ko)
KR (1) KR102308224B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200092415A (ko) * 2017-12-29 2020-08-03 마이크론 테크놀로지, 인크 독립적 메모리 뱅크 유지보수를 위한 방법들, 및 이를 이용하는 메모리 디바이스들 및 시스템들

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503670B2 (en) * 2017-12-21 2019-12-10 Advanced Micro Devices, Inc. Dynamic per-bank and all-bank refresh
US11681465B2 (en) 2020-06-12 2023-06-20 Advanced Micro Devices, Inc. Dynamic multi-bank memory command coalescing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140254298A1 (en) * 2013-03-11 2014-09-11 Nvidia Corporation Variable dynamic memory refresh

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5887146A (en) * 1995-08-14 1999-03-23 Data General Corporation Symmetric multiprocessing computer with non-uniform memory access architecture
US6392948B1 (en) * 1996-08-29 2002-05-21 Micron Technology, Inc. Semiconductor device with self refresh test mode
US6072741A (en) * 1997-04-01 2000-06-06 Ramtron International Corporation First-in, first-out integrated circuit memory device incorporating a retransmit function
US6256249B1 (en) * 1999-12-30 2001-07-03 Cypress Semiconductor Corp. Method for hidden DRAM refresh
US6889304B2 (en) * 2001-02-28 2005-05-03 Rambus Inc. Memory device supporting a dynamically configurable core organization
US6795361B2 (en) * 2002-05-06 2004-09-21 Micron Technology, Inc. Low power consumption memory device having row-to-column short
US20060171200A1 (en) * 2004-02-06 2006-08-03 Unity Semiconductor Corporation Memory using mixed valence conductive oxides
JP4299849B2 (ja) * 2006-08-22 2009-07-22 エルピーダメモリ株式会社 半導体記憶装置及びそのリフレッシュ制御方法
US8185685B2 (en) * 2007-12-14 2012-05-22 Hitachi Global Storage Technologies Netherlands B.V. NAND flash module replacement for DRAM module
KR20090124506A (ko) * 2008-05-30 2009-12-03 삼성전자주식회사 피크 전류를 감소시키기 위한 리프레쉬 회로를 가지는반도체 메모리 장치 및 그에 따른 워드라인 액티베이팅방법
CN102081964B (zh) 2009-11-30 2014-12-10 国际商业机器公司 动态随机访问存储器刷新的方法和系统
US9293187B2 (en) 2011-09-26 2016-03-22 Cisco Technology, Inc. Methods and apparatus for refreshing digital memory circuits
US9436625B2 (en) * 2012-06-13 2016-09-06 Nvidia Corporation Approach for allocating virtual bank managers within a dynamic random access memory (DRAM) controller to physical banks within a DRAM
US9086882B2 (en) 2012-08-07 2015-07-21 International Business Machines Corporation DRAM energy use optimization using application information
US9465622B2 (en) * 2012-10-17 2016-10-11 Samsung Electronics Co., Ltd. Application defined computing component configuration
US9269417B2 (en) 2013-01-04 2016-02-23 Intel Corporation Memory refresh management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140254298A1 (en) * 2013-03-11 2014-09-11 Nvidia Corporation Variable dynamic memory refresh

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200092415A (ko) * 2017-12-29 2020-08-03 마이크론 테크놀로지, 인크 독립적 메모리 뱅크 유지보수를 위한 방법들, 및 이를 이용하는 메모리 디바이스들 및 시스템들

Also Published As

Publication number Publication date
US20160307619A1 (en) 2016-10-20
KR102308224B1 (ko) 2021-10-05
US9524769B2 (en) 2016-12-20

Similar Documents

Publication Publication Date Title
JP7456083B2 (ja) ロウハンマ緩和のホスト支援のためのリフレッシュコマンド制御
US10007599B2 (en) Method for refreshing dynamic random access memory and a computer system
US9218222B2 (en) Physical manager of synchronization barrier between multiple processes
EP3132355B1 (en) Fine-grained bandwidth provisioning in a memory controller
KR101558482B1 (ko) 공유 멀티 포트 메모리 장치에서 뱅크의 공유 및 리프레쉬
EP3529706B1 (en) Gpu remote communication with triggered operations
KR100700156B1 (ko) 다이나믹 메모리의 리프레쉬 컨트롤러, 이를 포함하는반도체 시스템 및 다이나믹 메모리의 리프레쉬 제어 방법.
US9032162B1 (en) Systems and methods for providing memory controllers with memory access request merging capabilities
EP2625618B1 (en) Memory controllers, systems, and methods for applying page management policies based on stream transaction information
KR20170127046A (ko) 행 해머 이벤트에 응답하기 위한 방법, 장치 및 시스템
US8127087B2 (en) Memory controller for improved read port selection in a memory mirrored system
US9761296B2 (en) Smart in-module refresh for DRAM
CN107257964B (zh) Dram电路、计算机系统和访问dram电路的方法
CN114662136B (zh) 一种基于pcie通道的多算法ip核的高速加解密系统及方法
KR102308224B1 (ko) 다이내믹 랜덤 액세스 메모리 모듈 및 그것의 리프레쉬 방법
US20160117223A1 (en) Method for concurrent system management and error detection and correction requests in integrated circuits through location aware avoidance logic
CN110168644B (zh) 用于在存储体存储器单元阵列中提供行篡改保护的系统、方法和计算机程序
CN110168643B (zh) 经由交叉连接的共享存储体资源的同时的存储器存储体访问
US11494120B2 (en) Adaptive memory transaction scheduling
US10852956B1 (en) Structure of a high-bandwidth-memory command queue of a memory controller with external per-bank refresh and burst reordering
JP7420472B2 (ja) ページサイズ認識スケジューリング方法及び非一時的なコンピュータ読取可能記録媒体
CN106057226B (zh) 双端口存储系统的存取控制方法
US9570146B1 (en) Alternate access to DRAM data using cycle stealing
CN114333940A (zh) 存储器的刷新方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant