KR20160067089A - 고신뢰성 동작을 위한 메모리 제어기를 갖는 데이터 프로세서 및 방법 - Google Patents

고신뢰성 동작을 위한 메모리 제어기를 갖는 데이터 프로세서 및 방법 Download PDF

Info

Publication number
KR20160067089A
KR20160067089A KR1020167006317A KR20167006317A KR20160067089A KR 20160067089 A KR20160067089 A KR 20160067089A KR 1020167006317 A KR1020167006317 A KR 1020167006317A KR 20167006317 A KR20167006317 A KR 20167006317A KR 20160067089 A KR20160067089 A KR 20160067089A
Authority
KR
South Korea
Prior art keywords
memory
row
arbiter
access
time
Prior art date
Application number
KR1020167006317A
Other languages
English (en)
Other versions
KR101746735B1 (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 KR20160067089A publication Critical patent/KR20160067089A/ko
Application granted granted Critical
Publication of KR101746735B1 publication Critical patent/KR101746735B1/ko

Links

Images

Classifications

    • 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
    • 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/40603Arbitration, priority and concurrent access to memory cells for read/write or refresh operations
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • 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/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Dram (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터 프로세서는 메모리 액세스 에이전트와 메모리 제어기를 포함한다. 메모리 액세스 에이전트는 메모리에 복수의 액세스를 생성한다. 메모리 제어기는 메모리 액세스 에이전트에 결합되고, 메모리의 특성에 기초한 순서로 복수의 메모리 액세스를 스케줄링한다. 메모리의 특성은 미리 결정된 시간 창 내에서 메모리에 있는 행에 대한 활성 커맨드의 허용가능한 수를 나타내는 행 사이클 페이지 시간(tRC페이지)을 포함한다.

Description

고신뢰성 동작을 위한 메모리 제어기를 갖는 데이터 프로세서 및 방법{DATA PROCESSOR WITH MEMORY CONTROLLER FOR HIGH RELIABILITY OPERATION AND METHOD}
본 발명은 일반적으로 데이터 처리 시스템에 관한 것으로, 보다 상세하게는 메모리 제어기를 갖는 데이터 프로세서에 관한 것이다.
컴퓨터 시스템은 일반적으로 저렴하고 고밀도 동적 랜덤 액세스 메모리(dynamic random access memory: DRAM) 칩(chip)으로 형성된 메인 메모리를 사용한다. DRAM 칩에서 제1 행이 활성화되면, 제1 행을 따라 메모리 셀의 내용이 페이지 버퍼로 판독된다. 제1 행에 있는 메모리 셀에 대한 후속 판독 및 기록 액세스는 제1 행에 다시 액세스함이 없이 페이지 버퍼 내에서 완전히 일어날 수 있다. 데이터 프로세서가 차후에 동일한 메모리 뱅크(memory bank)에 있는 제2 행에 액세스하면, 행을 따라 메모리 셀은 다른 행이 활성화되기 전에 프리차지(precharge) 동작에서 복구된다. 데이터 프로세서는 동일한 메모리 뱅크에 있는 제1 행에 차후에 다시 액세스할 수 있다.
현대 DRAM 칩은 일반적으로 깊은 서브-마이크론 기술을 사용하여 1 내지 8 기가비트(Gb)의 데이터를 저장한다. 고밀도이고 특징부 사이즈가 작은 것으로 인해, 메모리의 행들은 다른 행에 너무 물리적으로 가까이 있어서 특정 행이 활성화될 때 인접한 행들에 저장된 데이터를 메모리 셀 커패시터에 있는 전하를 변경하는 것에 의해 업셋(upset)시킬 수 있다. 일반적으로 이 업셋은 메모리 셀이 주기적으로 리프레쉬(refresh)되기 때문에 유해하지는 않다. 그러나 경우에 따라 일부 메모리 액세스 패턴은 그 다음 리프레쉬 사이클 전에 특정 행을 너무 많은 횟수 활성화시켜 프리차지하여 인접한 행들에 있는 메모리 셀을 손상시켜 논리 상태를 역전시킬 수 있다. 손상된 후에는, 원래의 데이터가 손실되어서 후속 리프레쉬 사이클에서 복구될 수 없다.
본 발명에 따른 데이터 프로세서(300)는, 메모리(100)에 복수의 액세스를 생성하는 메모리 액세스 에이전트(memory accessing agent)(310, 320); 및 상기 메모리 액세스 에이전트(310, 320)에 결합되고, 상기 메모리(100)의 특성에 기초한 순서로 상기 복수의 액세스를 스케줄링하는 메모리 제어기(342)를 포함하되, 상기 메모리(100)의 상기 특성은 미리 결정된 시간 창(time window) 내에서 상기 메모리(100)에 있는 행에 활성 커맨드(activate command)의 허용가능한 수를 나타내는 행 사이클 페이지 시간(row cycle page time)을 포함한다.
본 발명에 따른 메모리 제어기(400)는, 수신된 메모리 액세스를 저장하는 복수의 엔트리를 구비하는 큐(410); 및 상기 큐(410)에 결합되고, 상기 큐(410)로부터 디스패치할 엔트리를 선택하는 아비터(420)를 포함하되, 상기 아비터(420)는 미리 결정된 시간 창 내에서 메모리(100)에 있는 행에 대한 활성 커맨드의 허용가능한 수를 나타내는 행 사이클 페이지 시간에 기초하여 선택하기에 적격인지를 결정한다.
본 발명에 따른 데이터 처리 시스템(700)은, 데이터 프로세서(710); 및 상기 데이터 프로세서(710)에 결합된 메모리 시스템(720)을 포함하되; 상기 데이터 프로세서(710)는 상기 메모리 시스템(720)의 특성에 기초한 순서로 복수의 메모리 액세스를 스케줄링하고, 상기 메모리 시스템(720)의 상기 특성은 미리 결정된 시간 창 내에서 상기 메모리 시스템(720)에 있는 행에 대한 활성 커맨드의 허용가능한 수를 나타내는 행 사이클 페이지 시간을 포함한다.
본 발명에 따른 방법은, 제1 시간에 메모리(100)의 행(125)을 활성화하는 단계(820); 상기 메모리(100)의 상기 행(125)을 프리차지(precharge)하는 단계(830); 상기 메모리(100)의 상기 행(125)에 대한 제2 메모리 액세스를 수신하는 단계(840); 및 상기 제1 시간 이후 경과된 시간이 행 사이클 페이지 시간을 초과할 때까지 상기 제2 메모리 액세스의 활성화를 금지하는 단계(850)를 포함한다.
도 1은 데이터 업셋을 받은 동적 랜덤 액세스 메모리(DRAM)를 도시하는 블록도;
도 2는 일부 실시예에 따라 도 1의 메모리를 포함할 수 있는 듀얼 인라인 메모리 모듈(dual inline memory module: DIMM)의 평면도;
도 3은 일부 실시예에 따라 메모리 제어기를 갖는 마이크로프로세서를 도시하는 블록도;
도 4는 일부 실시예에 따라 도 3의 메모리 제어기를 도시하는 블록도;
도 5는 일부 실시예에 따라 도 4의 메모리 제어기와 같은 메모리 제어기의 일부 블록도;
도 6은 도 4의 메모리 제어기의 동작을 이해하는데 유용한 타이밍도;
도 7은 일부 실시예에 따라 데이터 처리 시스템을 도시하는 블록도; 및
도 8은 도 4의 메모리 제어기에 사용되는 방법의 흐름도.
이하 상세한 설명에서, 상이한 도면에서 동일한 참조 도면은 유사하거나 또는 동일한 항목을 나타내는데 사용된다. 달리 언급이 없는 한, "결합된"이라는 용어와 이와 연관된 동사 형태는 이 기술 분야에 알려진 수단에 의해 직접 연결되는 것과 전기적으로 간접 연결되는 것을 포함하고, 달리 언급이 없는 한, 직접 연결되는 것을 나타내는 설명은 전기적으로 간접 연결되는 형태를 적절히 사용하는 대안적인 실시예를 포함한다.
아래에 개시된 데이터 프로세서는 행 사이클 페이지 시간(row cycle page time)(tRC페이지)을 고려하여 액세스를 스케줄(schedule)하는 메모리 제어기로 데이터 손상 문제를 해결한다. 행 사이클 페이지 시간은 미리 결정된 시간 창(time window) 내에서 메모리의 행에 활성 커맨드(activate command)의 허용가능한 수를 나타낸다. 데이터 프로세서는 메모리에 액세스를 생성하여 메모리 제어기에 제공하는 메모리 액세스 에이전트(memory accessing agent)를 포함한다. 메모리 제어기는 메모리 액세스 에이전트에 결합되고, 행 사이클 페이지 시간을 포함하여 메모리의 특성에 기초한 순서(order)로 액세스를 스케줄링한다.
일 형태에서, 메모리의 제1 페이지에 대한 제1 메모리 액세스가 디스패치(dispatched)된다. 메모리의 제1 페이지에 제2 메모리 액세스가 수신되지만, 제1 메모리 액세스의 디스패치 이후 경과된 시간이 행 사이클 페이지 시간을 초과할 때까지 제2 메모리 액세스의 디스패치가 금지된다.
도 1은 데이터 업셋을 받은 메모리(100)를 도시하는 블록도이다. 메모리(100)는 동적 랜덤 액세스 메모리(DRAM)이고, 일반적으로 행 경로(row path)(110), 8개의 메모리 뱅크(120), 열 회로(column circuit)(140), 데이터 경로(150), 및 "DQi"라고 지칭된 데이터 패드(data pad)(160) 세트 중 대표적인 하나의 데이터 패드를 포함한다.
행 경로(110)는, "뱅크 0"이라고 지칭된 제1 뱅크를 위한 행 어드레스 래치 및 디코더(row address latch and decoder)(112)와, "뱅크 7"이라고 지칭된 마지막 뱅크를 위한 행 어드레스 래치 및 디코더(114)와 같은, 각 뱅크를 위한 행 어드레스 래치 및 디코더를 포함한다. 행 경로(110)는 "A[13:0]"라고 지칭된 행 어드레스와 "BA[2:0]"라고 지칭된 뱅크 어드레스를 수신하는 입력 세트와, 출력 세트를 구비한다. 8개의 메모리 뱅크(120) 각각은 뱅크 0을 위한 메모리 어레이(122) 및 페이지 버퍼(124)와 같은, 연관된 메모리 어레이 및 페이지 버퍼를 포함한다. 8개의 메모리 뱅크(120) 각각은 대응하는 행 어드레스 래치 및 디코더의 출력 세트에 연결된 입력 세트를 구비한다.
열 회로(140)는 열 스위치(column switch)(142) 세트와 열 디코더(column decoder)(144)를 포함한다. 열 스위치(142) 세트는 메모리 뱅크(120) 각각의 페이지 버퍼에 연결되고, 열 선택 신호를 수신하는 입력 세트를 구비한다. 열 디코더(144)는 BA[2:0]에 의해 선택된 8개의 뱅크들 중 하나의 뱅크의 열을 선택하는 입력 A[13:0]에서 수행되는 열 어드레스를 수신하는 입력 세트와, 열 스위치(142)의 입력에 연결된 출력 세트를 구비한다.
데이터 경로(150)는 판독 데이터 경로(152)와 기록 데이터 경로(154)를 포함한다. 판독 데이터 경로(152)는 열 스위치(142)에 연결된 입력 세트와, 데이터 패드(160)에 연결된 출력 세트를 구비한다. 기록 데이터 경로(154)는 데이터 패드(160)에 연결된 입력 세트와, 열 스위치(142)에 연결된 출력 세트를 구비한다.
동작시, 메모리(100)는 메모리 뱅크에 동시 동작을 허용하고, 일 실시예에서, 메모리(100)는 JEDEC(Joint Electron Device Engineering Council)에서 발표된 DDR(double data rate) 표준, 예를 들어, DDR3 또는 DDR4 중 하나와 호환된다. 데이터에 액세스하기 위하여, 데이터 프로세서와 같은 메모리 액세스 에이전트는 활성화("ACT") 커맨드를 발행하는 것에 의해 메모리 뱅크에 있는 행을 활성화시킨다. ACT 커맨드에 응답하여, 뱅크 0에서 행(125)과 같은 선택된 행을 따라 메모리 셀로부터 데이터는 페이지 버퍼(124)와 같은 대응하는 페이지 버퍼에 저장된다. DRAM에서, 데이터 판독은 메모리 셀의 내용을 파괴할 수 있으나, 데이터 사본이 페이지 버퍼(124)에 저장된다. 메모리 액세스 에이전트가 행(125)에서 데이터에 액세스를 종료한 후, 이 에이전트는 프리차지("PRE") 커맨드를 발행하는 것에 의해 행을 폐쇄(close)한다. PRE 커맨드에 의해 페이지 버퍼(124)에 있는 데이터는 행(125)을 따라 동적 메모리 셀에 복구된다.
메모리(100)는 DRAM이므로, 메모리 셀에 있는 전하는 천천히 누설되고, 그리하여 데이터는 주기적으로 리프레쉬되어야 한다. (tREFI로 알려진) 리프레쉬 간격은 약한 메모리 셀이 누설로 인해 그 내용을 상실하는 시간량에 기초한다. 예를 들어 DDR4 DRAM에서, tREFI는 일반적인 환경에서 7.8 마이크로초(μs)이다.
현대의 깊은 서브-마이크론 제조 공정으로 형성된 DRAM에서, 주어진 행이 반복적으로 활성화되면 물리적으로 인접한 행들에 있는 메모리 셀에 저장된 데이터를 업셋시킬 수 있다. 예를 들어, 행(125)이 활성화되고 프리차지될 때마다, 인접한 행(126 및 127)들에 있는 메모리 셀의 전하가 변화된다. 행(126 및 127)들에 있는 메모리 셀이 리프레쉬되기 전에 행(125)이 너무 많은 횟수 활성화되고 프리차지되면, 그 데이터가 손상될 수 있다.
메모리를 재설계함이 없이 데이터 손상 문제를 완화하기 위하여, 본 발명자는 주어진 행에 있는 메모리 셀이 하나의 리프레쉬 간격 내에서 활성화되는 횟수를 고려하는 것에 의해 액세스를 스케줄링하는 메모리 제어기를 갖는 데이터 프로세서를 개발하였다. 예를 들어 액세스 율(access rate)이 너무 높은 경우, 메모리 제어기는 특정 시간이 만료된 후 때까지 액세스를 지연시킨다. 이 시간은 메모리가 리프레쉬 창 내에서 안전하게 액세스될 수 있는 횟수와 관련된다.
도 2는 일부 실시예에 따라 도 1의 메모리를 포함할 수 있는 듀얼 인라인 메모리 모듈(DIMM)(200)의 평면도를 도시한다. DIMM(200)은 일반적으로 다층 인쇄 회로 보드(printed circuit board: PCB) 위에 메모리 칩(210) 세트와 직렬 존재 검출(serial presence detect: SPD) 판독 전용 메모리(read only memory: ROM)(220)를 포함한다. 메모리 칩(210)은 도 1의 메모리(100)에 각각 대응할 수 있는 8개의 x8 메모리 칩을 포함한다. 일부 실시예에서, 메모리 칩(210)은 DDR3 SDRAM이다. 일부 실시예에서, 메모리 칩(210)은 DDR4 SDRAM이다.
일부 실시예에서, DIMM(200)은 메모리 칩(210)과 같이 배열된 기판의 후면에 메모리 디바이스의 제2 세트를 구비할 수 있는 것으로 이해된다. 일부 실시예에서, 각 메모리 칩은 칩-온-칩(chip-on-chip) 또는 적층된 다이(die) 기술을 사용하여, 칩당 하나를 초과하는 랭크(rank)를 형성하는 다수의 메모리 다이를 구비하는 반도체 패키지를 포함할 수 있다. 나아가, DIMM(200)은 도 1의 메모리(100)와 같은 메모리 칩을 사용할 수 있는 메모리 시스템을 나타낸다. 다른 실시예에서, 메모리(100)는 단일 인라인 메모리 모듈(single inline memory module: SIMM)에 사용될 수 있거나, 또는 데이터 프로세서 칩과 동일한 PCB에 장착될 수 있다.
SPD ROM(220)은 DIMM(200)의 여러 특성을 나타내는 값을 저장한다. JEDEC는 예를 들어 DDR3 DRAM에 대한 부록(Annex) K에 있는 표준 JESD 21-C에서, 이 비트의 위치와 의미를 지정한다. 최근에, 메모리 칩(210)이 데이터 업셋 문제를 받은 수 있다는 것을 제조사가 지정할 수 있는 것을 SPD 표준에 추가하는 것이 제안되었다. 따라서 도 2에 도시된 바와 같이, SPD ROM(220)은 메모리의 데이터 업셋 특성과 관련된 필드를 구비하는 바이트(222)를 포함한다. 바이트(222)는 예를 들어 바이트 $41에서 SPD ROM 사양의 이전 버전에 의해 예비된 SPD ROM(220) 내 어드레스에 위치된다.
바이트(222)는 예비된 비트 [7:6], 최대 활성화 창(tMAW)을 한정하는 비트 [5:4], "무제한(Unlimited) MAC"이라고 지칭된 비트 [3], 및 최대 활동 카운트(maximum activity count: MAC)를 한정하는 비트 [2:0]를 포함한다. 이 비트의 의미는 다음과 같다. 비트 [3]가 "1"로 설정되면, 메모리 칩(210)에 있는 행은 데이터를 손상시킴이 없이 무제한 횟수 활성화될 수 있고, 비트 [2:0]는 000으로 코딩된다. 이 설정은, 예를 들어, ACT 율에 상관없이 에러가 예상되지 않을 만큼 충분히 작은 데이터 업셋을 갖는 설계에 대응한다. 비트 [3]가 "0"으로 설정되면, 비트 [2:0]는 비트 [5:4]에서 tMAW에 의해 한정된 기간에 걸쳐 MAC를 한정한다. 예를 들어 도 2에 도시된 바와 같이, 비트 [5:4] = 00이고, 비트 [3] = 0이고, 비트 [2:0] = 100인 경우, 메모리 칩(210)에 있는 행은 데이터 업셋 문제로 인한 손상 없이 64 밀리초(ms)의 창 내에서 최대 400,000회 활성화될 수 있다. SPD ROM(220)의 바이트(222)에 이 특성을 저장하는 것은 이 율을 식별하는 단 하나의 가능한 기술인 것은 자명하다.
후술된 바와 같이, 메모리 제어기는 MAC와 tMAW에 기초한 행 페이지 사이클 시간(tRC페이지)으로 알려진 값에 응답하여, 마지막 활성화 이후 행 페이지 사이클 시간이 경과될 때까지 동일한 행을 선택적으로 활성화하는 것을 금지한다. 활성화가 너무 자주 일어나지 않는 것을 보장하는 것에 의해, 메모리 제어기는 데이터 업셋 문제로 인한 데이터 손상을 회피할 수 있다.
도 3은 일부 실시예에 따라 메모리 제어기(342)를 갖는 데이터 프로세서(300)의 블록도를 도시한다. 데이터 프로세서(300)는 일반적으로 CPU 부분(310), GPU 코어(320), 상호 연결 회로(330), 메모리 액세스 제어기(340), 및 입력/출력 제어기(350)를 포함한다.
CPU 부분(310)은 CPU 코어(311-314)(각각 "코어0", "코어1", "코어2", 및 "코어3"이라고 지칭됨)와, 공유된 레벨 3 (L3) 캐시(cache)(316)를 포함한다. 각 CPU 코어는 명령 세트로부터 명령을 실행할 수 있고 고유한 프로그램 스레드(program thread)를 실행할 수 있다. 각 CPU 코어는 각자 레벨 1 (L1)과 레벨 2 (L2) 캐시를 포함하지만, 공유된 L3 캐시(316)는 모든 CPU 코어에 공통이고 이 모든 CPU 코어에 의해 공유된다. 공유된 L3 캐시(316)는 메모리 액세스 에이전트로 동작하며, 캐시 라인 충전(cache line fill)을 위한 메모리 판독 버스트(burst)와 캐시 라인 라이트백(cache line writeback)을 위한 메모리 기록 버스트를 포함하는 메모리 액세스 요청을 제공한다.
GPU 코어(320)는 온-칩(on-chip) 그래픽 프로세서이고, 또한 메모리 액세스 에이전트로 동작한다.
상호 연결 회로(330)는 일반적으로 시스템 요청 인터페이스(system request interface: SRI)/호스트 브리지(host bridge)(332)와 크로스바(crossbar)(334)를 포함한다. SRI/호스트 브리지(332)는 공유된 L3 캐시(316)와 GPU 코어(320)로부터 액세스 요청을 큐잉(queue)하고, 미결된 트랜잭션(outstanding transaction)과 이 트랜잭션의 완료를 관리한다. 크로스바(334)는 5개의 양방향 포트(port)들 사이에 교차점 스위치(crosspoint switch)이고, 이들 포트들 중 하나는 SRI/호스트 브리지(332)에 연결된다.
메모리 액세스 제어기(340)는 오프-칩(off-chip) DRAM에 연결하기 위해 크로스바(334)에 연결된 양방향 포트를 구비한다. 메모리 액세스 제어기(340)는 일반적으로 메모리 제어기(342)와,"PHY"라고 지칭된 물리적 인터페이스 회로(344)를 포함한다. 메모리 제어기(342)는 CPU 코어(311-314)와 GPU 코어(320)로부터 오는 요청을 위한 특정 판독 및 기록 트랜잭션을 생성하고, 트랜잭션을 관련된 어드레스에 결합한다. 메모리 제어기(342)는 DRAM 초기화, 리프레쉬, 페이지 개방 및 폐쇄, 메모리 버스를 효율적으로 사용하기 위한 트랜잭션 그룹화 등의 오버헤드를 처리한다. 물리적 인터페이스 회로(344)는 물리적 신호를 관리하는 것에 의해 DIMM과 같은 외부 DRAM에 인터페이스를 제공한다. 메모리 제어기(342)와 물리적 인터페이스 회로(344)는 함께 적어도 하나의 특정 메모리 유형을 지원하고, DDR3과 DDR4를 모두 지원할 수 있다.
입력/출력 제어기(350)는 하나 이상의 고속 인터페이스 제어기를 포함한다. 예를 들어, 입력/출력 제어기는 하이퍼트랜스포트(HyperTransport) 링크 프로토콜에 순응하는 3개의 인터페이스 제어기를 포함할 수 있다.
데이터 프로세서(300)는 CPU 코어와 GPU 코어를 모두 포함하여, 가속 처리 유닛(accelerated processing unit: APU)으로 알려져 있다. 이러한 다양한 데이터 액세스 에이전트는 데이터 업셋 문제를 야기할 수 있는 여러 액세스 패턴을 생성할 수 있다. 예를 들어, CPU 코어(311-314)들 중 하나의 코어는 동일한 메모리 행이 빈번히 활성화하는 것을 야기하는 패턴으로 메모리에 저장된 데이터를 활보하는 프로그램 스레드를 실행할 수 있다. 다른 예는 CPU 코어(311-314) 또는 GPU 코어(320) 중 하나가 동일한 행으로부터 그리고 캐시 가능하지 않은 구역으로부터 데이터를 반복적으로 액세스할 때이다. 더 다른 예는 CPU 코어(311-314) 또는 GPU 코어(320) 중 하나를 초과하는 코어가 동일한 데이터 요소에 액세스하여 이를 변경할 때이다. 이 경우에, 공유된 L3 캐시(316)는 하나의 코어에 의해 변경된 데이터가 다른 코어에 의해 액세스될 때마다 메인 메모리를 업데이트하는 정책을 따를 수 있다. 다른 시나리오들도 가능하다.
도 4는 일부 실시예에 따라 도 3의 메모리 제어기(342)를 도시하는 블록도이다. 메모리 제어기(342)는 큐(queue)(410), 아비터(arbiter)(420), 및 다중화기(multiplexer)(430)를 포함한다. 큐(410)는 크로스바(334)로부터 수신된 메모리 액세스 요청을 저장한다. 메모리 액세스 요청은 메모리에 있는 임의의 뱅크에 대한 판독 또는 기록 사이클일 수 있고, 데이터 프로세서(300)에서 메모리 액세스 에이전트들 중 임의의 에이전트에 의해 생성된다. 도 4의 예에서, 큐(410)는 모든 뱅크와 랭크에 대해 총 16개의 엔트리(entry)를 구비하고, 각 엔트리는 액세스 어드레스, 기록 사이클의 경우에 데이터, 및 상대적 노후(age)를 나타내는 태그(tag)를 저장한다. 아비터(420)는 큐(410)에 있는 각 엔트리에 양방향으로 연결되어 그 속성을 판독하고, 액세스가 디스패치될 때 그 액세스를 수신하는 추가적인 입력을 구비하고, ACT 커맨드 및 PRE 커맨드와 같은 프로토콜 커맨드를 제공하는 출력을 구비하고, 물리적 인터페이스 회로(344)에 송신할 16개의 엔트리들 중 하나의 엔트리를 선택하는 제어 출력을 구비한다. 다중화기(430)는 큐(410)의 각 엔트리에 연결된 16개의 입력, 아비터(420)의 출력에 연결된 추가적인 입력, 아비터(420)의 출력에 연결된 제어 입력, 및 디스패치된 액세스를 물리적 인터페이스 회로(344)에 제공하는 출력을 구비한다.
동작시, 큐(410)는 크로스바(334)로부터 수신된 액세스를 저장하고, 상대적 노후를 나타내는 태그를 할당한다. 아비터(420)는 큐(410)에 있는 액세스 중 어느 것이 계류(pending) 중인 액세스인지를 결정하고, 타이밍 적격(timing eligibility), 노후, 및 공정성(fairness)과 같은 정책 세트를 스케줄링하고 이 정책 세트에 기초하여 물리적 인터페이스 회로(344)로 디스패치한다. 그리하여 아비터는 메모리 시스템의 각 뱅크와 랭크에서 개방 페이지를 나타내는 페이지 테이블(page table)을 포함한다. 일반적으로, 아비터(420)는 동일한 행에 대한 다수의 액세스를 함께 스케줄링하고 동일한 뱅크에 있는 상이한 행에 더 오래된 액세스를 지연시키는 것에 의해 메모리 시스템 버스의 효율을 증가시킬 수 있다. 따라서 아비터(420)는 현재 활성화된 행과 상이한 행에 액세스를 선택적으로 연기시키는 것에 의해 효율을 증가시킨다. 아비터(420)는 또한 엔트리의 노후 태그를 사용하여 액세스의 레이턴시를 제한한다. 따라서 아비터(420)는 다른 페이지에 대한 액세스가 특정 시간량 동안 계류 중일 때 메모리에서 개방 페이지에 대한 액세스 시리즈를 인터럽트한다. 아비터(420)는 또한 주어진 메모리 뱅크에 대한 ACT 커맨드와 PRE 커맨드 사이에 다른 메모리 뱅크에 대한 액세스를 스케줄링하여 오버헤드를 은닉한다.
아비터(420)는 동일한 행에 ACT 사이클과 PRE 사이클이 반복하는 것에 의해 야기되는 데이터 업셋 문제로 인한 데이터 손상을 회피하는 타이밍 적격을 또한 결정한다. 아비터(420)는 데이터 손상을 회피하는 미리 결정된 시간 창(tMAW) 내에 메모리(즉, MAC)의 행에 대한 활성 커맨드의 허용가능한 수에 반비례하는 행 사이클 페이지 시간(tRC페이지)으로 알려진 새로운 타이밍 파라미터를 한정한다.
일부 실시예에서, tRC페이지는 시간 창(tMAW)을 MAC 카운트로 나눈 것, 또는 tRC페이지 = tMAW/MAC로 근사화될 수 있다. 예를 들어 리프레쉬 간격이 64㎳이고, MAC 카운트가 400K인 경우, tRC페이지 = 64㎳/400,000 = 160 나노초(㎱)이다. 아비터(420)는 160㎱ 창 내에 동일한 행에 대한 ACT 커맨드를 초래하는 커맨드를 디스패치하지 않는 것에 의해 데이터 업셋 문제로 인한 데이터 손상을 회피할 수 있다.
다른 실시예에서, tRC페이지는 리프레쉬 시간을 고려하는 것에 의해 제2차 계산(second order calculation)에 따라 결정될 수 있다. 각 리프레쉬(REF) 커맨드가 tRFC와 같은 시간을 소비하면, tMAW는 tMAW에서 리프레쉬 사이클의 수에 tRFC를 곱한 것 또는 tRC페이지 = (tMAW - tRFC * (tMAW/tREFI))/MAC만큼 감소될 수 있다. DDR4 DRAM의 상이한 DRAM 밀도에 대한 tRC페이지를 예시적으로 계산한 것이 아래 표 1에 제시된다:
DRAM tMAW (ms) tRC (㎱) tRFC (㎱) 리프레쉬의 # 리프레쉬 시간 나머지 비-리프레쉬 시간 가능한 ACT의 # tRC페이지 100k (㎱)
2 Gb DDR4-1600J 64 47.5 160 8192 1310720 62689280 1319774 626.89
4 Gb DDR4-1600J 64 47.5 260 8192 2129920 61870090 1302528 618.70
8 Gb DDR4-1600J 64 47.5 350 8192 2867200 61132800 1287006 611.33
2 Gb DDR4-1600K 64 48.75 160 8192 1310720 62689280 1285934 626.89
4 Gb DDR4-1600K 64 48.75 260 8192 2129920 61870090 1269130 618.70
8 Gb DDR4-1600K 64 48.75 350 8192 2867200 61132800 1254006 611.33
2 Gb DDR4 1866J 64 46.85 160 8192 1310720 62689280 1338085 626.89
4 Gb DDR4-1866J 64 46.85 260 8192 2129920 61870090 1320599 618.70
8 Gb DDR4-1866J 64 46.85 350 8192 2867200 61132800 1304862 611.33
예를 들어, 리프레쉬 간격(tREFI)이 7.8㎲(7.8125㎲)인 경우, 각 행은 64㎳의 기준 간격에서 8192회 리프레쉬된다. 리프레쉬 시간이 160㎱이면, 64㎳ 간격에서, 1,310,720㎱가 리프레쉬에 소비된다. 따라서 유효 기준 간격은 62,689,280㎱이다. 이 간격에서 가능한 ACT의 이론적인 수는 62,689,280/tRC = 1,319,774개의 가능한 ACT이다. 그러나, tRC페이지는 62,689,280/100,000 = 626.689㎱와 같다. 따라서, DRAM 제조사가 64㎳의 기준 창에서 단 100K 액세스만을 허용한다면, 메모리 액세스 제어기(340)는 동일한 행에 대한 평균 ACT가 매 626.89㎱마다 한번보다 덜 빈번히 일어나는 것을 보장하여야 한다.
도 5는 일부 실시예에 따라 도 4의 메모리 제어기(400)와 같은 메모리 제어기의 일부(500)를 도시하는 블록도이다. 일부(500)는 대표 적격 회로(eligibility circuit)(510)와 대표 엔트리 준비 회로(entry ready circuit)(520)를 포함하는 아비터(420)의 일부와 다중화기(430)를 도시한다.
적격 회로(510)는 j번째 적격 회로이고, 적격 회로 세트를 나타낸다. 아비터(420)는 tRC페이지보다 더 작은 노후를 갖는 가능한 ACT의 수에 충분한 개수의 어드레스 레지스터(address register)와 카운터(counter)만을 요구하며, 아비터(420)는 tRC페이지/tRC개의 이러한 회로를 포함하고, 여기서 비율 tRC페이지/tRC는 그 다음 정수(whole number)로 라운드(rounded up)된다. 적격 회로(510)는 카운터(512), 선택적인 해쉬 회로(hash circuit)(514), 및 어드레스 레지스터(516)를 포함한다. 카운터(512)는 "ACT"라고 지칭된 신호를 수신하는 부하 입력, 데이터 입력, 및 "준비(READY)"라고 지칭된 출력을 구비한다. 해쉬 회로(514)는 다중화기(430)의 출력으로부터 m개의 어드레스 비트를 수신하는 m-비트 입력과, 출력을 구비한다. m개의 비트는 고유한 뱅크와 액세스 행을 결정하는데 충분하다. 어드레스 레지스터(516)는 해쉬 회로(514)의 출력에 연결된 n-비트 입력과, n-비트 출력을 구비하고, 아비터(420)가 최근에 발행한 특정 ACT 커맨드에 대한 어드레스 값을 저장한다.
엔트리 준비 회로(520)는 i번째 엔트리 준비 회로이고, 큐(410)에서 각 엔트리에 대응하는 엔트리 준비 회로의 세트를 나타낸다. 엔트리 준비 회로(520)는 비교기(522), OR 게이트(524), 및 AND 게이트(526)를 포함한다. 비교기(522)는 어드레스 레지스터(516)의 출력에 연결된 제1 입력, 큐(410)의 각 엔트리에 연결되어 어드레스를 수신하는 제2 입력, 및 "일치(MATCH)[i, j]"라고 지칭된 신호를 제공하는 출력을 구비한다. OR 게이트(524)는 카운터(512)의 출력에 결합된 제1 입력, 비교기(522)의 출력에 연결된 제2 입력, 및 출력을 구비한다. AND 게이트(526)는 OR 게이트(526)의 출력에 연결된 제1 입력, 다른 대응하는 OR 게이트의 출력에 연결된 추가적인 입력, 및 "엔트리[i]준비(ENTRY[i]READY)"라고 지칭된 신호를 제공하는 출력을 구비한다.
레지스터(530)는 카운터(512)의 데이터 입력에 연결된 출력을 구비한다. 레지스터(530)는 아래에 더 설명된 방식으로 tRC페이지 값을 저장한다.
동작시, ACT가 다중화기(430)를 통해 큐(410)로부터 디스패치될 때마다, 다중화기(430)는 ACT 신호를 활성화켜, tRC페이지 값을 tRC페이지/tRC 적격 회로의 회전 세트의 카운터(512)와 같은 카운터에 로딩한다. 카운터(512)는 카운트가 0에 도달할 때까지 카운트다운하고, 이 0 점에서 카운터는 준비 신호(READY signal)를 활성화한다. 큐(410)의 i번째 엔트리의 어드레스가 j번째 적격 회로와 연관된 어드레스와 일치하면, 비교기(522)는
Figure pct00001
신호를 출력한다. OR 게이트(524)는 j번째 ACT가 tRC페이지보다 더 오래 전에 발생하였을 때 또는 엔트리[i]어드레스(ENTRY[i]address)가 j번째 적격 회로의 어드레스와 일치하지 않을 때, 논리 하이 값을 출력한다. 엔트리 준비 회로(520)에서 모든 OR 게이트의 출력이 논리 하이일 때, AND 게이트(526)는 논리 하이에서 엔트리[i]준비(ENTRY[i]READY) 신호를 활성화시켜 엔트리[i](ENTRY[i])에 대응하는 행이 활성화 준비된 것을 나타낸다.
아비터(420)에서 나머지 논리회로(logic)는 엔트리[i]준비 신호를 수신하고, 엔트리[i]준비 신호가 활성인지 여부와, 다른 스케줄 제약이 충족될 때에 기초하여 선택적으로 액세스가 일어날 수 있다.
해쉬 회로(514)는 선택적이다. 만약 존재하는 경우, 해쉬 회로(514)는 m개의 비트의 입력 어드레스를 더 작은 n 개의 비트의 적격 회로에 상관시킨다. 따라서 tRC페이지가 tRC보다 크다면, 설계자는 tRC페이지/tRC개의 카운터 및 비교기의 세트를 구현하는데 비용이 너무 비싸다는 것을 발견할 수 있다. 해쉬 함수는 구현된 하드웨어에 기초하여 선택되고 사이즈 정해질 수 있다. 따라서 해쉬 함수는 회로 사이즈와 우연한 긍정 오류(false positive) 사이에 트레이드오프(tradeoff)를 허용한다. 긍정 오류는 행 어드레스(X)와 행 어드레스(Z)가 모두 동일한 n-비트 어드레스로 해쉬할 때 일어날 수 있다. 따라서 tRC페이지가 행(X)에 대해 아직 만료되지 않았고, 행(X)과 행(Z)의 해쉬 함수들이 같다면, 행(Z)에 대한 액세스는 행 어드레스들이 실제 상이하다 하더라도 오류로 기다릴 필요가 있다. 긍정 오류는 스케줄 페널티(scheduling penalty)를 야기한다.
도 6은 도 4의 메모리 제어기(400)의 동작을 이해하는데 유용한 타이밍도(600)를 도시한다. 도 6에서, 수평 축은㎱ 단위의 시간을 나타내고, 수직 축은 볼트 단위의 여러 신호의 진폭을 나타낸다. 도 6은 CK/
Figure pct00002
신호 쌍(610)과, 커맨드(CMD) 신호 세트(620)를 포함하는 관심 있는 2개의 신호 그룹을 도시한다. DDR DRAM에서, CMD 신호는
Figure pct00003
를 포함하는 여러 제어 신호로 형성되고, DDR 표준에 따라 특정 커맨드로 맵핑(mapped)된다. 도 6은 또한 "t0", "t1", "t2", "t3", "t4", "t5", 및 "t6"이라고 지칭된 시간을 포함하는 여러 관심 시점(time point)들을 도시한다.
DDR DRAM에서, 커맨드는 CK의 상승 에지와
Figure pct00004
의 하강 에지에 레지스터된다. 시간(t0)에서, 메모리(100)는 "ACTX"라고 지칭된 활성 커맨드를 행(X)에 레지스터한다. DDR 표준에 따라, tRC는 활성 커맨드들 사이의 최소 시간량을 지정한다. 도 6의 예에서, 가장 앞선 다른 활성 커맨드는 t2에서 일어날 수 있다. 메모리(100)는 시간(t1)에서 행(X)에 대한 PRE 커맨드를 수신한다. DDR 표준에 따라, 행(X)은 t2 후 tRC에서 다시 활성화될 수 있다.
그러나, 아비터(420)는 또한 tRC페이지 파라미터에 기초하여 적격을 구현한다. 따라서, 아비터(420)는 행(X)이 t0 후 tRC페이지 때까지 활성화되지 못하게 한다. 이 경우에, 행(X)은 t4 때까지는 다시 활성화되기에 적격이지 않아서, 행(X)을 활성화하는데 t3과 t4 사이의 시간과 같은 추가적인 지연을 삽입한다. 또한, 아비터(420)는 행(Y)이 t2 후 tRC페이지 때까지 활성화되지 못하게 한다. 이 경우에, 행(Y)은 t6 때까지 다시 활성화되기에는 적격이지 않고, 시간(t5)이 t4 후 tRC를 나타내는 경우, 아비터(420)는 행(Y)을 활성화하는데 t5와 t6 사이의 시간과 같은 추가적인 지연을 삽입한다.
특정 행이 새로운 ACT 커맨드에 아직 적격이지 않는 동안에도 메모리 제어기(400)가 추가적인 유용한 작업을 수행할 수 있으므로 tRC페이지에 기초하여 새로운 ACT 커맨드를 발행하는 것을 지연시키더라도 대부분의 메모리 액세스 패턴에 대해 성능이 상당히 감소되지 않는다. 그러나, 이 지연은 tMAW에서 MAC를 초과할 수 있는 빈번한 행 활성화 패턴이 유지되는 우연한 메모리 액세스 패턴에서 행 업셋 문제로 인한 데이터 손상을 감소시키거나 또는 제거시킨다. 이 시나리오에서, 데이터 손상을 방지하기 위해 약간 감소된 성능이 허용된다.
도 7은 일부 실시예에 따른 데이터 처리 시스템(700)을 도시하는 블록도를 도시한다. 데이터 처리 시스템(700)은 가속 처리 유닛(APU)(710) 형태의 데이터 프로세서, 메모리 시스템(720), "사우쓰브리지(SOUTHBRIDGE)"(730)로 알려진 입력/출력(I/O) 제어기, 및 기본 입력 출력 시스템(BIOS) 판독 전용 메모리(ROM)(740)를 포함한다. 데이터 프로세서(710)는 메모리 시스템(720)에 연결되어 메모리 액세스 동작을 수행하는 PHY(712)를 구비한다. 이 예에서, 메모리 시스템(720)은 행 업셋 문제와 관련된 데이터를 저장하는 도 2의 DIMM(200)와 같은 DIMM이다. 데이터 프로세서(710)는 또한 고속 I/O 회로(714)를 통해 I/O 제어기(730)에 연결되고, 이 제어기는 메모리 시스템(720)과 BIOS ROM(740)에 모두 연결된다.
초기화 시에, 데이터 프로세서(710)는 I/O 제어기(730)를 통해 BIOS ROM(740)에 저장된 명령을 판독하는 것에 의해 데이터 처리 시스템(700)을 초기화한다. BIOS ROM(740)은 메모리 시스템 초기화 부분(742)을 포함한다. 메모리 시스템 초기화 부분(742)에 의해 데이터 프로세서(710)는 메모리 시스템(720)에서 SPD ROM에서 행 업셋 파라미터를 판독하고, tRC페이지를 계산하며, tRC페이지를 레지스터(530)에 저장한다.
도 8은 도 4의 메모리 제어기(400)에 사용되는 방법(800)의 흐름도를 도시한다. 단계(810)에서, tRC페이지는, 예를 들어, BIOS의 제어 하에 DIMM에서 SPD ROM을 판독하고 나서, 상기 표 1에 대해 설명된 tRC페이지를 계산하는 것에 의해 결정된다. 단계(820)에서, 행(125)은 시간(t0)에 활성화된다. 활성화는 아비터(420)에 의해 큐(410)로부터 선택된 판독 또는 기록 액세스 후에 수행되어 행(125)이 개방된다. 단계(830)에서, 행(125)은, 예를 들어, 동일한 뱅크에 있는 다른 페이지에 개재 액세스 또는 동일한 뱅크에 대한 개재 리프레쉬 동작으로 인해 프리차지된다. 단계(840)에서, 행(125)에 대한 제2 메모리 액세스가 수신된다. 이 제2 메모리 액세스는 단계(830)에서 행(125)에 대한 개재 PRE 커맨드로 인해 새로운 ACT 커맨드를 요구한다. 루프(850)는 행(125)이 활성화되기에 적격인지 여부를 결정한다. 판정 박스(852)에서, 경과된 시간, 즉 현재 시간과 시간(t0) 사이의 지속시간이 tRC페이지와 비교된다. 이 비교는, 예를 들어, 상기 도 5에 대해 설명된 바와 같이, 단계(820)에서 tRC페이지 값으로 카운터를 시작하고 나서, 카운터가 제2 메모리 액세스가 단계(840)에 수신된 시간만큼 0으로 카운트 다운되었는지 여부를 검출하는 것에 의해 달성될 수 있다. 이 시간이 경과되지 않았다면, 단계(854)는 행(125)의 활성화를 금지한다. 이 시간이 경과되었다면, 단계(860)는 메모리 시스템에서 다른 조건들이 충족되었는지 여부를 결정한다. 예를 들어, 개방 페이지에 대한 액세스가 일반적으로 특정 공정성 기준에 따라 ACT 커맨드를 요구하는 새로운 페이지에 대한 액세스보다 선호된다. 마지막으로 다른 기준이 만족되면, 단계(870)에서 행(125)이 다시 활성화되고, 단계(880)에서 행(125)에 대한 제2 메모리 액세스가 디스패치된다.
데이터 프로세서(300)가 어드레스 레지스터, 카운터, 및 비교 논리회로와 같은 하드웨어 회로를 사용하여 적격을 결정하는 메모리 제어기(342)를 포함하고 있으나, 이들 기능은 여러 하드웨어와 소프트웨어의 조합으로 구현될 수도 있다. 소프트웨어 컴포넌트의 일부는 적어도 하나의 프로세서에 의해 실행되는 컴퓨터 판독가능한 저장 매체에 저장될 수 있다. 나아가 도 8에 도시된 방법의 일부 또는 전부는, 컴퓨터 판독가능한 저장 매체에 저장되고 적어도 하나의 프로세서에 의해 실행되는 명령에 의해 제어될 수도 있다. 도 8에 도시된 동작들 각각은 비-일시적인 컴퓨터 메모리 또는 컴퓨터 판독가능한 저장 매체에 저장된 명령에 대응할 수 있다. 여러 실시예에서, 비-일시적인 컴퓨터 판독가능한 저장 매체는 자기 디스크 또는 광 디스크 저장 디바이스, 솔리드 스테이트 저장 디바이스, 예를 들어, 플래쉬 메모리, 또는 다른 비휘발성 메모리 디바이스 또는 디바이스들을 포함한다. 비-일시적인 컴퓨터 판독가능한 저장 매체에 저장된 컴퓨터 판독가능한 명령은 하나 이상의 프로세서에 의해 해석되거나 및/또는 실행가능한 소스 코드, 어셈블리 언어 코드, 목적 코드, 또는 다른 명령 포맷일 수 있다.
나아가, 도 3의 데이터 프로세서(300) 또는 그 임의의 일부는 프로그램으로 판독되고 직접 또는 간접 사용되어, 집적 회로를 제조할 수 있는 데이터베이스 또는 다른 데이터 구조 형태의 컴퓨터 액세스가능한 데이터 구조로 기술되거나 표현될 수 있다. 예를 들어, 이 데이터 구조는 예를 들어 베릴로그(Verilog) 또는 VHDL와 같은 하이 레벨 설계 언어(high level design language: HDL)로 하드웨어 기능의 거동-레벨 설명(behavioral-level description) 또는 레지스터-전달 레벨(register-transfer level: RTL) 설명일 수 있다. 이 설명은 이 설명을 합성하여 합성 라이브러리(synthesis library)로부터 게이트 리스트(gate list)를 포함하는 네트리스트(netlist)를 생성할 수 있는 합성 도구에 의해 판독될 수 있다. 네트리스트는 집적 회로를 포함하는 하드웨어의 기능을 나타내는 게이트 세트를 포함한다. 네트리스트는 마스크(mask)에 적용될 기하학적 형상을 설명하는 데이터 세트를 생산하도록 배치되고 라우팅될 수 있다. 마스크는 집적 회로를 생산하는 여러 반도체 제조 단계에 사용될 수 있다. 대안적으로, 컴퓨터 액세스가능한 저장 매체에서 데이터베이스는, 요구에 따라 네트리스트(합성 라이브러리와 함께 또는 없이) 또는 데이터 세트이거나, 또는 그래픽 데이터 시스템(Graphic Data System: GDS) II 데이터일 수 있다.
특정 실시예들이 설명되었으나, 이 기술 분야에 통상의 지식을 가진 자에게는 이들 실시예에 여러 변형이 명백할 것이다. 도시된 데이터 프로세서는 4개의 CPU 코어와 하나의 GPU 코어를 포함하지만, 다른 실시예에서, 데이터 프로세서는 상이한 개수의 메모리 액세스 에이전트를 포함할 수 있다. 나아가 도시된 데이터 프로세서는 하나의 메모리 제어기와 그 연관된 메모리 채널을 포함하고 있으나, 다른 실시예에서 데이터 프로세서는 대응하는 메모리 채널을 갖는 다수의 메모리 제어기를 포함할 수 있다. 전술한 바와 같이, 선택적인 해쉬 회로는 일부 실시예에서 포함되어 회로 면적을 감소시킬 수 있고, 다른 실시예에서 배제되어 긍정 오류를 회피하여 더 높은 성능을 유지할 수 있다. 다른 실시예에서, 메모리 제어기는 각 메모리 뱅크에 대해 별도의 큐를 유지할 수 있다. 이 실시예에서, 적격 회로와 엔트리 준비 회로의 수는 비례하여 증가할 수 있다. 나아가 tRC페이지 값은 리프레쉬 간격을 MAC 카운트로 나눈 것으로 제1차 근사(first order approximation)로 연산되거나 또는 리프레쉬 시간을 고려하여 제2차 근사로 연산될 수 있다. 나아가 일부 실시예에서, 메모리 제어기는 보통 tRC 율에서 더 작은 개수의 활동 버스트를 여전히 추적하면서 상대적으로 긴 시간 창에 걸쳐 tRC페이지 메모리 액세스 스케줄을 구현한다.
따라서, 첨부된 청구범위는 개시된 실시예의 범위 내에 있는 개시된 실시예의 모든 변형을 포함하는 것으로 의도된다.

Claims (34)

  1. 데이터 프로세서(300)로서,
    메모리(100)에 복수의 액세스를 생성하는 메모리 액세스 에이전트(memory accessing agent)(310, 320); 및
    상기 메모리 액세스 에이전트(310, 320)에 결합되고, 상기 메모리(100)의 특성에 기초한 순서로 상기 복수의 액세스를 스케줄링하는 메모리 제어기(342)를 포함하되,
    상기 메모리(100)의 상기 특성은 미리 결정된 시간 창(time window) 내에서 상기 메모리(100)에 있는 행에 활성 커맨드(activate command)의 허용가능한 수를 나타내는 행 사이클 페이지 시간(row cycle page time)을 포함하는, 데이터 프로세서(300).
  2. 제1항에 있어서,
    상기 순서는 상기 미리 결정된 시간 창 내에서 최근의 액세스의 특성에 더 기초하고, 상기 최근의 액세스의 상기 특성은 상기 미리 결정된 시간 창 내에서 특정 행에 대한 활성 커맨드의 수를 포함하는, 데이터 프로세서.
  3. 제1항에 있어서,
    상기 메모리(100)는 DDR(double data rate) 동적 랜덤 액세스 메모리(dynamic random access memory: DRAM)를 포함하는, 데이터 프로세서(300).
  4. 제1항에 있어서,
    상기 메모리 제어기(342)와 상기 메모리(100) 사이에 결합된 물리적 인터페이스 회로(344)를 더 포함하는 데이터 프로세서(300).
  5. 제1항에 있어서,
    상기 행 사이클 페이지 시간은 상기 메모리(100)와 연관된 레지스터(222)를 판독하는 것에 의해 결정되는, 데이터 프로세서(300).
  6. 제5항에 있어서,
    상기 메모리 액세스 에이전트(310, 320)는 기본 입력-출력 시스템(BIOS) 메모리(740)의 메모리 시스템 초기화 부분(742)의 제어 하에 상기 레지스터(222)를 판독하는, 데이터 프로세서(300).
  7. 제1항에 있어서,
    상기 메모리 액세스 에이전트(310, 320)는 상기 미리 결정된 시간 창으로부터 상기 미리 결정된 시간 창 동안의 주기적인 리프레쉬 시간(periodic refresh time)을 감산하여 순 시간 창(net time window)을 획득하고, 상기 순 시간 창을 상기 메모리(100)에 있는 상기 행에 대한 활성 커맨드의 상기 허용가능한 수로 나누어 상기 행 사이클 페이지 시간을 획득하는 것에 의해 상기 행 사이클 페이지 시간을 결정하는, 데이터 프로세서(300).
  8. 제1항에 있어서,
    상기 메모리 액세스 에이전트(310, 320)는 적어도 하나의 중앙 처리 유닛(central processing unit: CPU) 코어(310)와 적어도 하나의 그래픽 처리 유닛(graphics processing unit: GPU) 코어(320)를 포함하는, 데이터 프로세서(300).
  9. 제1항에 있어서,
    상기 메모리 제어기(342)는,
    상기 메모리 액세스 에이전트(310, 320)로부터 수신된 메모리 액세스를 저장하는 복수의 엔트리를 구비하는 큐(queue)(410); 및
    상기 큐(410)에 결합되고, 상기 복수의 엔트리 중 어느 것이 선택된 액세스를 저장하는 지를 나타내는 제어 신호를 제공하는 것에 의해 상기 메모리(100)에 디스패치(dispatch)할 엔트리를 상기 큐(410)로부터 선택하는 아비터(arbiter)(420)를 포함하는, 데이터 프로세서(300).
  10. 제9항에 있어서,
    상기 아비터는 상기 복수의 엔트리 중 어느 것이 선택된 액세스를 저장하는지를 나타내는 제어 신호를 더 제공하고;
    상기 메모리 제어기는 상기 큐(410)의 상기 복수의 엔트리에 결합된 입력, 상기 아비터(420)에 결합되고 상기 제어 신호를 수신하는 제어 입력과, 선택된 메모리 액세스를 제공하는 출력을 구비하는 다중화기(multiplexer)430)를 더 포함하는, 데이터 프로세서.
  11. 제10항에 있어서,
    상기 아비터(420)는 적격 회로(eligibility circuit)(510)를 포함하고, 상기 적격 회로(510)는,
    상기 다중화기(430)에 의해 활성 커맨드 출력으로 활성화된 행을 나타내는 어드레스를 저장하는 어드레스 레지스터(address register)(516); 및
    상기 행이 활성화된 이후 경과된 시간이 상기 행 사이클 페이지 시간에 도달된 경우 준비 신호(ready signal)를 제공하는 카운터(counter)(512)를 포함하는, 데이터 프로세서(300).
  12. 제11항에 있어서,
    상기 아비터(420)는, 상기 적격 회로(510)에 결합되고, 상기 큐(410)의 대응하는 엔트리의 어드레스가 상기 어드레스와 일치할 때 상기 대응하는 엔트리가 상기 준비 신호에 기초하여 선택하기에 적격인지 여부를 결정하는 엔트리 준비 회로(entry ready circuit)(520)를 더 포함하며, 상기 아비터(420)는 적격인 엔트리들 중에서 상기 큐(410)로부터 엔트리를 선택하는, 데이터 프로세서(300).
  13. 제12항에 있어서,
    상기 적격 회로(510)는, 해쉬 함수에 따라 상기 어드레스의 일부를 상기 어드레스 레지스터(516)에 저장하는 해쉬 회로(hash circuit)(514)를 더 포함하는, 데이터 프로세서(300).
  14. 제9항에 있어서,
    상기 아비터(420)는 상기 적격 회로(510)를 포함하는 복수의 적격 회로를 포함하고, 상기 복수는 행 사이클 시간에 대한 상기 행 사이클 페이지 시간의 비율에 수치적으로 대응하는, 데이터 프로세서(300).
  15. 메모리 제어기(400)로서,
    수신된 메모리 액세스를 저장하는 복수의 엔트리를 구비하는 큐(410); 및
    상기 큐(410)에 결합되고, 상기 큐(410)로부터 디스패치할 엔트리를 선택하는 아비터(420)를 포함하되,
    상기 아비터(420)는 미리 결정된 시간 창 내에서 메모리(100)에 있는 행에 대한 활성 커맨드의 허용가능한 수를 나타내는 행 사이클 페이지 시간에 기초하여 선택하기에 적격인지를 결정하는, 메모리 제어기(400).
  16. 제15항에 있어서,
    상기 아비터는 상기 복수의 엔트리 중 어느 것이 선택된 액세스를 저장하는지를 나타내는 제어 신호를 더 제공하고;
    상기 메모리 제어기는 상기 큐의 상기 복수의 엔트리에 결합된 입력, 상기 아비터에 결합되고, 상기 제어 신호를 수신하는 제어 입력과, 디스패치된 메모리 액세스를 제공하는 출력을 구비하는 다중화기를 더 포함하며,
    상기 큐(410)의 상기 복수의 엔트리에 결합된 입력, 상기 아비터(420)에 결합되고, 상기 제어 신호를 수신하는 제어 입력과, 디스패치된 메모리 액세스를 제공하는 출력을 구비하는 다중화기(430)를 더 포함하는, 메모리 제어기(400).
  17. 제15항에 있어서,
    상기 아비터(420)는 적격 회로(510)를 포함하고, 상기 적격 회로(510)는,
    활성 커맨드에 의해 활성화된 행을 나타내는 어드레스를 저장하는 어드레스 레지스터(516); 및
    상기 행이 활성화된 이후 경과된 시간이 상기 행 사이클 페이지 시간에 도달된 경우 준비 신호를 제공하는 카운터(512)를 포함하는, 메모리 제어기(400).
  18. 제17항에 있어서,
    상기 아비터(420)는, 상기 적격 회로(510)에 결합되고, 상기 큐(410)의 대응하는 엔트리의 어드레스가 상기 어드레스와 일치하는 경우 상기 대응하는 엔트리가 상기 준비 신호에 기초하여 선택하기에 적격인지 여부를 결정하는 엔트리 준비 회로(520)를 더 포함하며, 상기 아비터(420)는 적격인 엔트리들 중에서 상기 큐(410)로부터 엔트리를 선택하는, 메모리 제어기(400).
  19. 제17항에 있어서,
    상기 적격 회로(510)는, 해쉬 함수에 따라 상기 어드레스의 일부를 상기 어드레스 레지스터(516)에 저장하는 해쉬 회로(514)를 더 포함하는, 메모리 제어기(400).
  20. 제17항에 있어서,
    상기 아비터(420)는 상기 적격 회로(510)를 포함하는 복수의 적격 회로를 포함하고, 상기 복수는 행 사이클 시간에 대한 상기 행 사이클 페이지 시간의 비율에 수치적으로 대응하는, 메모리 제어기(400).
  21. 데이터 처리 시스템(700)으로서,
    데이터 프로세서(710); 및
    상기 데이터 프로세서(710)에 결합된 메모리 시스템(720)을 포함하되;
    상기 데이터 프로세서(710)는 상기 메모리 시스템(720)의 특성에 기초한 순서로 복수의 메모리 액세스를 스케줄링하고, 상기 메모리 시스템(720)의 상기 특성은 미리 결정된 시간 창 내에서 상기 메모리 시스템(720)에 있는 행에 대한 활성 커맨드의 허용가능한 수를 나타내는 행 사이클 페이지 시간을 포함하는, 데이터 처리 시스템(700).
  22. 제21항에 있어서,
    상기 순서는 상기 미리 결정된 시간 창 내에서 최근의 액세스의 특성에 더 기초하고, 상기 최근의 액세스의 상기 특성은 상기 미리 결정된 시간 창 내에서 특정 행에 대한 활성 커맨드의 수를 포함하는, 데이터 처리 시스템.
  23. 제21항에 있어서,
    상기 메모리 시스템(720)은 복수의 DDR(double data rate) 동적 랜덤 액세스 메모리(dual inline memory module: DRAM)(210)를 구비하는 듀얼 인라인 메모리 모듈(DIMM)(200)을 포함하는, 데이터 처리 시스템(700).
  24. 제23항에 있어서,
    상기 데이터 프로세서(710)는 상기 DIMM(200) 상에 있는 직렬 존재 검출(serial presence detect: SPD) 판독 전용 메모리(read only memory: ROM)(220)에 있는 레지스터(222)를 판독하는 것에 의해 상기 행 사이클 페이지 시간을 결정하는, 데이터 처리 시스템(700).
  25. 제24항에 있어서,
    상기 데이터 프로세서(710)는 비휘발성 메모리(740)에 저장된 기본 입력-출력 시스템(BIOS)의 메모리 시스템 초기화 부분(742)의 제어 하에 상기 레지스터(222)를 판독하는, 데이터 처리 시스템(700).
  26. 제25항에 있어서,
    상기 데이터 프로세서(710)와 상기 비휘발성 메모리(740) 사이에 결합된 입력/출력 제어기(730)를 더 포함하는, 데이터 처리 시스템(700).
  27. 제21항에 있어서,
    상기 데이터 프로세서(710)는, 상기 미리 결정된 시간 창으로부터 상기 미리 결정된 시간 창 동안의 주기적인 리프레쉬 시간을 감산하여 순 시간 창을 획득하고, 상기 순 시간 창을 행에 대한 활성 커맨드의 상기 허용가능한 수로 나누어 상기 행 사이클 페이지 시간을 획득하는 것에 의해, 상기 행 사이클 페이지 시간을 결정하는, 데이터 처리 시스템(700).
  28. 제21항에 있어서,
    상기 데이터 프로세서(710)는 적어도 하나의 중앙 처리 유닛(CPU) 코어(310)와 적어도 하나의 그래픽 처리 유닛(GPU) 코어(320)를 구비하는 진보된 프로세서 유닛(advanced processor unit: APU)(300)을 포함하는, 데이터 처리 시스템(700).
  29. 방법으로서,
    제1 시간에 메모리(100)의 행(125)을 활성화하는 단계(820);
    상기 메모리(100)의 상기 행(125)을 프리차지(precharge)하는 단계(830);
    상기 메모리(100)의 상기 행(125)에 대한 제2 메모리 액세스를 수신하는 단계(840); 및
    상기 제1 시간 이후 경과된 시간이 행 사이클 페이지 시간을 초과할 때까지 상기 제2 메모리 액세스의 활성화를 금지하는 단계(850)를 포함하는, 방법.
  30. 제29항에 있어서,
    상기 경과된 시간이 상기 행 사이클 페이지 시간을 초과한 후 상기 행(125)을 다시 활성화하는 단계(870); 및
    상기 행(125)에 대한 상기 제2 메모리 액세스를 디스패치하는 단계(880)를 더 포함하는, 방법.
  31. 제30항에 있어서,
    적어도 하나의 다른 조건이 충족되었는지 여부를 결정하는 단계(860); 및
    상기 결정에 응답하여 상기 행(125)을 다시 활성화(870)하고 상기 제2 메모리 액세스를 디스패치하는 단계(880)를 더 포함하는 방법.
  32. 제29항에 있어서,
    미리 결정된 창 내에서 허용된 액세스의 수에 기초하여 상기 행 사이클 페이지 시간을 결정하는 단계(810)를 더 포함하는, 방법.
  33. 제32항에 있어서,
    상기 결정하는 단계(810)는, 상기 미리 결정된 창 동안 리프레쉬 시간에 더 기초하여 상기 행 사이클 페이지 시간을 결정하는 단계를 포함하는, 방법.
  34. 제29항에 있어서,
    상기 행(125)을 활성화하는 단계(820)는, DDR(double data rate) 동적 랜덤 액세스 메모리(DRAM)의 상기 행(125)에 대한 제1 메모리 액세스를 디스패치하는 단계를 포함하는, 방법.
KR1020167006317A 2013-10-08 2014-10-06 고신뢰성 동작을 위한 메모리 제어기를 갖는 데이터 프로세서 및 방법 KR101746735B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/048,212 2013-10-08
US14/048,212 US9281046B2 (en) 2013-10-08 2013-10-08 Data processor with memory controller for high reliability operation and method
PCT/US2014/059227 WO2015054093A1 (en) 2013-10-08 2014-10-06 Data processor with memory controller for high reliability operation and method

Publications (2)

Publication Number Publication Date
KR20160067089A true KR20160067089A (ko) 2016-06-13
KR101746735B1 KR101746735B1 (ko) 2017-06-14

Family

ID=52777898

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167006317A KR101746735B1 (ko) 2013-10-08 2014-10-06 고신뢰성 동작을 위한 메모리 제어기를 갖는 데이터 프로세서 및 방법

Country Status (6)

Country Link
US (1) US9281046B2 (ko)
EP (1) EP3055863B1 (ko)
JP (1) JP6130594B2 (ko)
KR (1) KR101746735B1 (ko)
CN (1) CN105518784B (ko)
WO (1) WO2015054093A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200119633A (ko) * 2019-04-10 2020-10-20 에스케이하이닉스 주식회사 히스토리 기반 메모리 시스템 및 그 제어 방법

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9269436B2 (en) 2013-03-12 2016-02-23 Intel Corporation Techniques for determining victim row addresses in a volatile memory
US9449671B2 (en) * 2013-03-15 2016-09-20 Intel Corporation Techniques for probabilistic dynamic random access memory row repair
JP6039522B2 (ja) * 2013-09-06 2016-12-07 株式会社東芝 外部入出力装置および調停設定結果格納方法
US10467157B2 (en) 2015-12-16 2019-11-05 Rambus Inc. Deterministic operation of storage class memory
US10198216B2 (en) * 2016-05-28 2019-02-05 Advanced Micro Devices, Inc. Low power memory throttling
US9792975B1 (en) * 2016-06-23 2017-10-17 Mediatek Inc. Dram and access and operating method thereof
US10566040B2 (en) * 2016-07-29 2020-02-18 Micron Technology, Inc. Variable page size architecture
KR102278337B1 (ko) 2017-04-21 2021-07-19 에스케이하이닉스 주식회사 메모리장치의 스케줄러 및 스케줄링 방법
US10503670B2 (en) * 2017-12-21 2019-12-10 Advanced Micro Devices, Inc. Dynamic per-bank and all-bank refresh
US10977854B2 (en) 2018-02-27 2021-04-13 Stmicroelectronics International N.V. Data volume sculptor for deep learning acceleration
CN110729006B (zh) 2018-07-16 2022-07-05 超威半导体(上海)有限公司 存储器控制器中的刷新方案
CN110399219B (zh) * 2019-07-18 2022-05-17 深圳云天励飞技术有限公司 内存访问方法、dmc及存储介质
KR20210053017A (ko) 2019-11-01 2021-05-11 삼성전자주식회사 프로세싱 소자를 포함하는 메모리 장치 및 상기 메모리 장치를 포함하는 메모리 시스템
US11646066B2 (en) * 2019-12-16 2023-05-09 Etron Technology, Inc. Memory controller and related memory
US11669274B2 (en) * 2021-03-31 2023-06-06 Advanced Micro Devices, Inc. Write bank group mask during arbitration
US11977465B2 (en) * 2022-05-26 2024-05-07 Changxin Memory Technologies, Inc. Method for testing a command, an apparatus for testing a command and a readable storage medium

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1120905A (zh) * 1995-05-11 1996-04-24 彭瑜黔 风味猪肉罐头的制作方法
US6295586B1 (en) 1998-12-04 2001-09-25 Advanced Micro Devices, Inc. Queue based memory controller
US6788593B2 (en) 2001-02-28 2004-09-07 Rambus, Inc. Asynchronous, high-bandwidth memory component using calibrated timing elements
JP2003132676A (ja) * 2001-10-29 2003-05-09 Mitsubishi Electric Corp 半導体記憶装置
JP4459495B2 (ja) * 2001-12-13 2010-04-28 富士通マイクロエレクトロニクス株式会社 半導体記憶装置のリフレッシュ制御方法、及び該制御方法を有する半導体記憶装置
US7543102B2 (en) * 2005-04-18 2009-06-02 University Of Maryland System and method for performing multi-rank command scheduling in DDR SDRAM memory systems
US9632929B2 (en) 2006-02-09 2017-04-25 Google Inc. Translating an address associated with a command communicated between a system and memory circuits
US8364918B1 (en) * 2007-04-06 2013-01-29 Marvell International Ltd. Sensed opportunistic garbage collection in memory components
ITMI20070787A1 (it) 2007-04-17 2008-10-18 St Microelectronics Srl Memoria non volatile
US7996642B1 (en) * 2007-04-25 2011-08-09 Marvell International Ltd. Digital locked loop on channel tagged memory requests for memory optimization
US8046559B2 (en) * 2008-03-27 2011-10-25 Intel Corporation Memory rank burst scheduling
JP4843655B2 (ja) * 2008-09-24 2011-12-21 株式会社東芝 半導体記憶装置
US7859932B2 (en) * 2008-12-18 2010-12-28 Sandisk Corporation Data refresh for non-volatile storage
US8127087B2 (en) * 2009-02-12 2012-02-28 International Business Machines Corporation Memory controller for improved read port selection in a memory mirrored system
US8615629B2 (en) 2010-01-18 2013-12-24 Marvell International Ltd. Access scheduler
US8838853B2 (en) * 2010-01-18 2014-09-16 Marvell International Ltd. Access buffer
KR20120067509A (ko) 2010-12-16 2012-06-26 에스케이하이닉스 주식회사 메모리 장치, 이를 포함하는 메모리 시스템 및 그 제어 방법
KR101873526B1 (ko) * 2011-06-09 2018-07-02 삼성전자주식회사 에러 정정회로를 구비한 온 칩 데이터 스크러빙 장치 및 방법
JP2013004158A (ja) * 2011-06-21 2013-01-07 Elpida Memory Inc 半導体記憶装置及びそのリフレッシュ制御方法
US9141568B2 (en) * 2011-08-25 2015-09-22 Apple Inc. Proportional memory operation throttling
US9257169B2 (en) * 2012-05-14 2016-02-09 Samsung Electronics Co., Ltd. Memory device, memory system, and operating methods thereof
US9032141B2 (en) * 2012-11-30 2015-05-12 Intel Corporation Row hammer monitoring based on stored row hammer threshold value
US9325601B2 (en) * 2013-02-20 2016-04-26 Spirent Communications, Inc. Reducing effective cycle time in accessing memory modules
US9349433B2 (en) * 2013-03-13 2016-05-24 Inphi Corporation Hidden refresh of weak memory storage cells in semiconductor memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200119633A (ko) * 2019-04-10 2020-10-20 에스케이하이닉스 주식회사 히스토리 기반 메모리 시스템 및 그 제어 방법

Also Published As

Publication number Publication date
CN105518784B (zh) 2017-12-12
US20150100723A1 (en) 2015-04-09
WO2015054093A1 (en) 2015-04-16
US9281046B2 (en) 2016-03-08
JP2016536666A (ja) 2016-11-24
EP3055863A4 (en) 2017-07-05
JP6130594B2 (ja) 2017-05-17
EP3055863A1 (en) 2016-08-17
CN105518784A (zh) 2016-04-20
EP3055863B1 (en) 2020-02-19
KR101746735B1 (ko) 2017-06-14

Similar Documents

Publication Publication Date Title
KR101746735B1 (ko) 고신뢰성 동작을 위한 메모리 제어기를 갖는 데이터 프로세서 및 방법
US9293188B2 (en) Memory and memory controller for high reliability operation and method
US11474703B2 (en) Memory system with region-specific memory access scheduling
CN107924375B (zh) 用于高速存储器接口的命令仲裁
CN110729006B (zh) 存储器控制器中的刷新方案
KR102615693B1 (ko) Dram을 위한 리프레시 관리
CN109219806B (zh) 低功率存储器节流
CN116324744A (zh) 具有多个命令子队列和对应的仲裁器的存储器控制器
KR20230017865A (ko) Dram을 위한 리프레시 관리
US20240069811A1 (en) Efficient rank switching in multi-rank memory controller
KR20230157522A (ko) 중재 동안의 기록 뱅크 그룹 마스크
KR20240022655A (ko) 하이브리드 dram/영구 메모리 채널 중재 기능을 갖는 메모리 제어기
US11474746B2 (en) Refresh management for DRAM
EP3270294B1 (en) Command arbitration for high-speed memory interfaces
US20240112722A1 (en) Directed refresh management for dram

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant