KR102034626B1 - 메모리 동작을 제어하는 방법 및 장치 - Google Patents

메모리 동작을 제어하는 방법 및 장치 Download PDF

Info

Publication number
KR102034626B1
KR102034626B1 KR1020130073612A KR20130073612A KR102034626B1 KR 102034626 B1 KR102034626 B1 KR 102034626B1 KR 1020130073612 A KR1020130073612 A KR 1020130073612A KR 20130073612 A KR20130073612 A KR 20130073612A KR 102034626 B1 KR102034626 B1 KR 102034626B1
Authority
KR
South Korea
Prior art keywords
memory
state
request
buffer
type
Prior art date
Application number
KR1020130073612A
Other languages
English (en)
Other versions
KR20150001034A (ko
Inventor
이경호
이승범
김중백
이승욱
정준목
Original Assignee
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Priority to KR1020130073612A priority Critical patent/KR102034626B1/ko
Priority to EP14817499.8A priority patent/EP3014459B1/en
Priority to CN201480036497.0A priority patent/CN105393232B/zh
Priority to PCT/KR2014/005716 priority patent/WO2014209045A1/en
Priority to US14/316,655 priority patent/US10275371B2/en
Publication of KR20150001034A publication Critical patent/KR20150001034A/ko
Application granted granted Critical
Publication of KR102034626B1 publication Critical patent/KR102034626B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers

Abstract

메모리 동작을 제어하는 방법 및 장치가 개시된다. 메모리 동작을 제어하기 위해, 인터페이스 버퍼 및 스케줄러 버퍼에 저장된 리퀘스트의 정보를 기초로 메모리의 주소 별로 커맨드 수를 판단하고, 커맨드 수가 최대인 커맨드의 종류에 따라 메모리 동작의 제어 상태를 결정하고, 메모리 동작의 제어 상태에 따라 인터페이스 버퍼로부터 스케줄러 버퍼로 전달되는 리퀘스트 및 스케줄러 버퍼로부터 출력되는 리퀘스트의 종류를 결정한다.

Description

메모리 동작을 제어하는 방법 및 장치 {Method and apparatus for controlling memory operation}
본 발명은 메모리 동작을 제어하는 방법 및 장치에 관한 것으로, 보다 상세하게는, 스케줄러 버퍼에 저장된 리퀘스트를 선택하여 커맨드를 생성함으로써 메모리의 동작을 제어하는 방법 및 장치에 관한 것이다.
일반적으로 DRAM (Dynamic Random Access Memory)은 그 특성상 사용할 로우(row)를 open 시켜야 사용할 수 있고, 커맨드(command)에 대응하는 로우 어드레스(Row Address)가 현재 사용 중인 로우 어드레스와 다르면 해당 row를 close 시킨 이후 커맨드의 로우 어드레스에 대응하는 row를 다시 open 시켜야 사용 가능하다.
이 때, 메모리 로우에 대한 Open, Close 및 읽기(Read), 쓰기(Write) 커맨드를 수행하기 위해 기다려야 하는 시간이 각 DRAM Memory 별로 존재한다. 로우 집약성 (Row Locality) 기술이란 위 문제를 해결하기 위해 제안된 것으로, 메모리 컨트롤러 (Memory Controller)가 메모리의 오픈된 row와 동일한 로우 어드레스를 가지는 리퀘스트 (Request)부터 처리하는 방식이다. 즉, row locality 기술에 따르면 특정 로우 어드레스를 open 한 이후 같은 로우 어드레스를 가지는 리퀘스트를 처리함으로써 row의 close와 재 open을 위한 시간을 줄일 수 있기 때문에 사용 효율(Utilization)을 높일 수 있다.
메모리 컨트롤러는 SoC (System on Chips) 구조의 특성상 한정된 크기의 스케줄러 버퍼 (Scheduler Buffer) 만을 사용할 수 있다. 스케줄러 버퍼의 크기는 사용 효율을 결정하는 매우 중요한 요소이다. 따라서 이와 같은 한정된 크기의 스케줄러 버퍼를 사용하여 사용 효율을 높이기 위한 방법으로, 메모리 컨트롤러는 row buffer locality가 높은 리퀘스트를 스케줄러 버퍼에 입력 받아 스케줄링 (Scheduling) 하거나 한정된 버퍼 크기 (Buffer Size)를 늘려 다양한 선택이 가능하도록 할 수 있다. 여기서 버퍼 크기를 늘린다는 것은 더 많은 비용이 드는 것을 의미한다.
또한, 사용 효율을 높이기 위한 다른 방법으로 Read/Write 변환을 줄이는 방법이 있다. 구체적으로, 메모리에 Read 커맨드를 수행한 이후 Write 커맨드를 수행하기 위해서 기다려야 하는 시간이 존재하고, Write 커맨드를 수행한 이후 Read 커맨드를 수행하기 위해서 또한 기다려야 하는 시간이 각각 존재한다. 따라서 메모리 커맨드(Open, Close, Read, Write) 의 수행 순서에 따라 사용 효율이 크게는 50% 이상 차이가 날 수 있다.
본 발명이 이루고자 하는 기술적 과제는, 버퍼에 저장된 리퀘스트 정보를 기초로 스케줄러 버퍼를 동적으로 조절함으로써 사용 효율을 높이는 방법 및 장치를 제공하는 데 있다.
상기의 기술적 과제를 달성하기 위한 본 발명의 실시예는, 메모리 동작을 제어하는 방법으로서, 인터페이스 버퍼 및 스케줄러 버퍼에 저장된 리퀘스트의 정보를 기초로 상기 메모리의 주소 별로 커맨드 수를 판단하는 단계; 상기 커맨드 수가 최대인 커맨드의 종류에 따라 상기 메모리 동작의 제어 상태를 결정하는 단계; 및 상기 메모리 동작의 제어 상태에 따라 상기 인터페이스 버퍼로부터 상기 스케줄러 버퍼로 전달되는 리퀘스트 및 상기 스케줄러 버퍼로부터 출력되는 리퀘스트의 종류를 결정하는 단계;를 포함한다.
상기의 기술적 과제를 달성하기 위한 본 발명의 실시예는, 메모리 제어 장치로서, 인터페이스 버퍼 및 스케줄러 버퍼에 저장된 리퀘스트의 정보를 기초로 상기 메모리의 뱅크 별로 커맨드 수를 판단하고, 상기 커맨드 수가 최대인 커맨드의 종류에 따라 상기 메모리 동작의 제어 상태를 결정하는 상태 예측기; 및 상기 결정 결과에 따라 상기 인터페이스 버퍼로부터 상기 스케줄러 버퍼로 전달되는 리퀘스트 및 상기 스케줄러 버퍼로부터 출력되는 리퀘스트의 종류를 결정하는 선택기;를 포함한다.
본 발명에 따른 메모리 동작을 제어하는 방법 및 장치에 의하면, 인터페이스 버퍼와 스케줄러 버퍼에 저장된 리퀘스트 정보에 따라 스케줄러 버퍼의 Read 리퀘스트와 Write 리퀘스트의 비중을 적응적으로 조절하므로, 사용 효율을 높일 수 있다.
도 1은 종래의 메모리 제어 방법에 따른 버퍼 구조의 일 예를 도시한 도면,
도 2는 종래 버퍼 구조의 다른 예를 도시한 도면,
도 3은 종래 버퍼 구조의 또 다른 예를 도시한 도면,
도 4는 종래의 메모리 제어 방법에 따른 Read/Write 전환 문제를 도시한 도면,
도 5는 본 발명의 실시예에 따른 메모리 컨트롤러가 포함된 시스템의 구성을 도시한 도면,
도 6은 메모리 컨트롤러의 네 가지 상태를 나타내는 상태 머신 (State Machine)을 도시한 도면,
도 7은 본 발명의 실시예에 따른 메모리 제어 방법의 수행 과정을 도시한 도면, 그리고,
도 8은 본 발명의 실시예에 따라 Read 및 Write 리퀘스트의 개수가 조절되는 예를 도시한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 이때, 첨부된 도면에서 동일한 구성요소는 가능한 동일한 부호로 나타내고 있음에 유의해야 한다. 또한, 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략할 것이다.
먼저, 종래의 메모리 제어 방법의 특징 및 문제점을 간단히 설명한다.
도 1은 종래의 메모리 제어 방법에 따른 버퍼 구조의 일 예를 도시한 도면이다. 구체적으로 도 1의 (a)를 참조하면, 입력 버퍼 (110)는 Read 리퀘스트가 저장되는 Read Queue (112) 및 Write 리퀘스트가 저장되는 Write Queue (114)로 구분된 FIFO (First In First Out) 방식의 구조이고, 스케줄러 버퍼 (120)는 하나의 Queue로 이루어진 구조이다.
입력 버퍼 (110)로부터 Read 및 Write 리퀘스트가 동시에 스케줄러 버퍼 (120)로 입력되고 도 1의 (b)와 같이 매 사이클(cycle)마다 스케줄러에서 Read 리퀘스트만을 연속적으로 선택하여 출력 커맨드 (130)를 메모리에 전송할 경우 (142, 144, 146), 선택되지 않은 Write 리퀘스트들이 스케줄러 버퍼(120)를 차지하게 된다 (148). 그에 따라 스케줄러는 메모리가 Read 동작 상태인 경우에도 Write 리퀘스트를 선택할 수 밖에 없어 Read/Write 전환이 발생하게 되거나, Read 리퀘스트의 row locality가 낮아지게 되어 결과적으로 스케줄러 버퍼(120)의 사용 효율이 감소할 수 있다.
도 2는 종래 버퍼 구조의 다른 예를 도시한 도면이다. 도 2를 참조하면, 입력 버퍼 (210)는 Read 리퀘스트가 저장되는 Read Queue (212) 및 Write 리퀘스트가 저장되는 Write Queue (214)로 구분된 FIFO (First In First Out) 방식의 구조이고, 스케줄러 버퍼 (220)는 고정된 크기의 Read Queue (222) 및 Write Queue (224)를 구비한다.
도 2와 같은 구조에서는 스케줄러 버퍼에서 Read 및 Write 리퀘스트를 위한 크기가 고정되어 있기 때문에, 스케줄러는 Read Queue (222)가 모두 채워질 경우에 Write Queue (224)가 비워져 있음에도 입력 버퍼 (210)로부터 Row Hit Read 리퀘스트를 가져올 수 없어 현재 open된 메모리의 로우를 close한 후 다시 open (230)하여야 하는 비효율적인 동작이 발생할 수 있다.
도 3은 종래 버퍼 구조의 또 다른 예를 도시한 도면이다. 도 3을 참조하면, 도 2와 마찬가지로 입력 버퍼 (310)는 Read 리퀘스트가 저장되는 Read Queue (312) 및 Write 리퀘스트가 저장되는 Write Queue (314)로 구분된 FIFO (First In First Out) 방식의 구조이고, 스케줄러 버퍼 (320)는 고정된 크기의 Read Queue (322) 및 Write Queue (324)를 구비한다.
도 3과 같은 구조에서 메모리가 Read only로 동작하는 경우, Write Queue (324)는 전혀 사용되지 않으므로 스케줄러 버퍼 사용량이 저하되어 결국 row locality를 높이기 어려울 수 있다. 또한 도 2와 같이 Row Hit Read 리퀘스트를 처리할 수 없어 row를 close 후 다시 open (330)하여야 하는 문제도 발생할 수 있다.
도 4는 종래의 메모리 제어 방법에 따른 Read/Write 전환 문제를 도시한 도면이다.
먼저 도 4의 (a)를 참조하면, 메모리의 Write 동작에서 Read 동작으로의 전환 시에 많은 시간이 소요되는 것을 확인할 수 있다. 이를 Read 동작 세 번과 Write 동작 세 번을 수행하는 경우에 적용하여 보면, (b)와 같이 Read 동작 후 Read/Write 전환이 발생하고 다시 Write/Read 전환이 발생하는 경우에는 총 57 클럭(CK)이 소요되지만, (c)와 같이 요청된 Read 동작을 모두 수행한 후 Read/Write 전환을 수행하여 Write 동작을 수행하는 경우에는 49 클럭(CK)이 소요되어 총 소요 시간이 감소하게 된다.
본 발명은 이상에서 설명한 것과 같은 종래 스케줄러 버퍼의 구조적 문제 및 스케줄링의 효율성 문제를 해결하기 위한 것으로, 스케줄러 버퍼에 저장되는 Read 및 Write 리퀘스트의 수를 현재 메모리의 동작 상태 및 상태 변환 여부에 따라 적응적으로 조절하는 구성을 가진다.
도 5는 본 발명의 실시예에 따른 메모리 컨트롤러가 포함된 시스템의 구성을 도시한 도면이다.
도 5를 참조하면, 본 발명의 실시예에 따른 메모리 컨트롤러(535)는 인터페이스 버퍼(500)로부터 출력되는 리퀘스트를 기초로 메모리에 커맨드를 수행하는 스케줄러(520)의 일부로서 구현될 수 있다.
일 예로서, 메모리 컨트롤러는 인터페이스 버퍼(500) 및 스케줄러 버퍼(545)에 저장된 리퀘스트를 바탕으로 메모리의 동작 상태를 변경할지 여부를 결정하고, 결정 결과에 따라 입력 선택기(525) 및 출력 선택기(550)를 제어하는 상태 예측기 또는 Read/Write (R/W) 예측기(540)를 구비할 수 있다. 또한 메모리 컨트롤러는 R/W 예측기(540)의 제어에 따라 인터페이스 버퍼(500) 및 스케줄러 버퍼(545)로부터 출력되는 리퀘스트의 종류를 선택하는 입력 선택기(525) 및 출력 선택기(550)를 더 구비할 수 있다.
본 발명의 실시예에서, 인터페이스 버퍼(500)는 FIFO 구조인 Read 버퍼(505)와 Write 버퍼(510)를 포함하며, 스케줄러 버퍼(545)는 Single Queue 구조를 가질 수 있다.
입력 선택기(525)는 인터페이스 버퍼(500)로부터 출력된 리퀘스트를 스케줄러 버퍼(545)로 전달하는 멀티플렉서(530)를 제어하여 인터페이스 버퍼(500)의 Read 버퍼(505) 및 Write 버퍼(510) 중 리퀘스트를 전달 받을 버퍼를 선택한다. 또한 출력 선택기(550)는 스케줄러 버퍼(545)로부터 출력되는 리퀘스트의 종류를 선택하고, 선택된 리퀘스트에 대응하여 생성된 커맨드를 메모리로 전달한다.
본 발명에 따른 실시예에서, R/W 예측기(540)는 메모리 동작을 제어하기 위한 상태인 메모리 컨트롤러의 상태를 4개의 단계로 구분하고, 메모리의 상태를 변경하는 것으로 결정할 경우, 그에 따라 메모리 컨트롤러의 상태를 변경한다.
도 6은 메모리 컨트롤러의 네 가지 상태를 나타내는 상태 머신 (State Machine)을 도시한 도면이다.
도 6을 참조하면, R/W 예측기는 메모리 컨트롤러의 상태를 RD(Read)(610), RD2WR(Read To Write)(620), WR(Write)(630) 및 WR2RD(Write To Read)(640)의 네 가지로 구분할 수 있다. RD(610) 및 WR(630)는 메모리의 Read 및 Write 동작에 대응하는 상태이며, RD2WR(620)는 현재 Read 상태인 메모리를 Write 상태로 변경하기 위해 스케줄러 버퍼를 조절하는 상태이다. 또한 WR2RD(640)는 현재 Write 상태인 메모리를 Read 상태로 변경하기 위해 스케줄러 버퍼를 조절하는 상태이다. 도 6에 도시된 바와 같이, 메모리 컨트롤러의 상태는 RD(610), RD2WR(620), WR(630) 및 WR2RD(640)의 순서로 천이한다.
R/W 예측기는 메모리 컨트롤러가 RD(610) 및 WR(630) 상태에 있는 동안 메모리의 동작 사이클마다 인터페이스 버퍼와 스케줄러 버퍼의 리퀘스트를 분석한다. 분석 결과에 따라 메모리 동작을 변경할지 여부를 결정하고, 결정 결과에 따라 메모리 컨트롤러의 현재 상태를 유지하거나 다음 상태인 RD2WR(620) 또는 WR2RD(640) 상태로 천이한다. 이와 같이 RD2WR(620) 및 WR2RD(640) 상태를 도입함으로써, 메모리 컨트롤러는 메모리 상태를 변경하기 위해 스케줄러 버퍼의 크기를 조절하는 시간을 확보할 수 있으므로 스케줄러 버퍼의 활용도를 높일 수 있다.
이하, 본 발명의 실시예에 따른 R/W 예측기의 메모리 제어 과정을 상세히 설명한다.
도 7은 본 발명의 실시예에 따른 메모리 제어 방법의 수행 과정을 도시한 도면이다.
도 7을 참조하면, R/W 예측기는 710 단계에서 인터페이스 버퍼와 스케줄러 버퍼의 리퀘스트로부터 메모리의 뱅크 별 커맨드 수를 판단한다. 이때 커맨드 수는 Read 커맨드와 Write 커맨드에 대하여 각각 별도로 얻어진다. 또한 로우 어드레스가 동일한 리퀘스트의 커맨드 수는 합산한다.
이와 같은 커맨드 수 판단은 두 개의 단계로 이루어질 수 있다. 예를 들면, R/W 예측기는 1단계로서 인터페이스 버퍼와 스케줄러 버퍼에 대하여 각각 뱅크 별 커맨드 수를 판단하고, 2단계로서 인터페이스 버퍼와 스케줄러 버퍼의 판단 결과를 통합하여 메모리 상태를 결정하기 위한 최종 결과를 산출한다.
먼저 인터페이스 버퍼 또는 스케줄러 버퍼에 저장된 리퀘스트를 기초로 메모리의 뱅크 별 CAS(Column Address Strobe) 커맨드 수가 다음의 표 1과 같이 얻어지는 경우를 예로 들 수 있다.
리퀘스트 주소 카스 커맨드 수
1 Bank0, Row0 3
2 Bank0, Row0 4
3 Bank0, Row1 6
4 Bank1, Row1 4
5 Bank2, Row0 3
6 Bank2, Row1 4
위 표 1과 같은 결과에 대하여, R/W 예측기는 동일 어드레스에 대한 카스 커맨드 수를 합산하고, 산출 결과를 내림차순으로 정렬하여 상위 일부의 결과만을 선택함으로써 다음의 표 2와 같은 결과를 얻을 수 있다.
주소 카스 커맨드 수
Bank0, Row0 7
Bank1, Row1 4
Bank2, Row1 4
표 2를 참조하면, 표 1에서 동일한 로우 어드레스에 대응하는 리퀘스트 1 및 2의 카스 커맨드 수가 합산되었다.
다음으로 R/W 예측기는 인터페이스 버퍼 및 스케줄러 버퍼에 대하여 표 2와 같이 얻어진 결과를 통합하여 뱅크 별 커맨드 수의 최종 결과를 산출한다. 이 경우에도 로우 어드레스가 동일한 커맨드는 그 수를 서로 합산한다.
720 단계에서, R/W 예측기는 최종적으로 얻어진 뱅크 별 커맨드 수를 기초로 메모리의 상태를 변경할 것인지 여부를 결정한다. 메모리의 상태 변경 여부는 최대 개수인 커맨드의 종류에 따라 결정된다. 즉, R/W 예측기는 메모리의 현재 상태와 최대 개수인 커맨드의 종류가 일치하지 않으면 메모리의 상태를 변경하고, 메모리의 현재 상태와 최대 개수인 커맨드의 종류가 일치하면 메모리의 상태를 유지하는 것으로 결정할 수 있다.
메모리가 현재 Write 동작 상태이고 최대 개수인 커맨드가 Read 커맨드인 경우, R/W 예측기는 메모리의 상태를 Write에서 Read로 변경할 것을 결정할 수 있다. 따라서 메모리 컨트롤러의 상태는 도 6의 상태 머신에서 메모리의 현재 상태에 대응하는 WR(630) 상태로부터 다음 상태인 WR2RD(640) 상태로 천이하게 된다. 메모리 컨트롤러가 WR2RD(640) 상태에 있는 동안 메모리는 Write 동작 상태를 유지한다.
또한 메모리가 현재 Read 동작 상태이고 최대 개수인 커맨드가 Write 커맨드인 경우, R/W 예측기는 메모리의 상태를 Read에서 Write로 변경할 것을 결정할 수 있다. 따라서 메모리 컨트롤러의 상태는 도 6의 상태 머신에서 메모리의 현재 상태에 대응하는 RD(610) 상태로부터 다음 상태인 RD2WR(620) 상태로 천이하게 된다. 메모리 컨트롤러가 RD2WR(620) 상태에 있는 동안 메모리는 Read 동작 상태를 유지한다.
730 단계에서 메모리의 상태를 변경하는 것으로 결정하는 경우, R/W 예측기는 740 단계에서 변경될 메모리의 상태에 따라 입력 선택기와 출력 선택기를 제어하여 인터페이스 버퍼와 스케줄러 버퍼의 출력 리퀘스트의 종류를 결정한다.
예를 들면, 메모리 컨트롤러가 RD2WR 상태에 있는 경우는 메모리의 상태가 Read에서 Write로 변경되는 경우이므로, R/W 예측기는 스케줄러 버퍼에서 메모리의 현재 상태에 대응하는 Read 리퀘스트의 비중을 낮추고, Write 리퀘스트의 비중을 높이는 동작을 수행한다. 따라서 R/W 예측기의 제어 하에, 입력 선택기는 인터페이스 버퍼로부터 출력되는 리퀘스트 중에서 Write 리퀘스트를 선택하여 스케줄러 버퍼에 저장되는 Write 리퀘스트의 비중을 높이고, 출력 선택기는 스케줄러 버퍼로부터 출력되는 리퀘스트 중에서 Read 리퀘스트를 선택하여 현재 스케줄러 버퍼에 저장된 Read 리퀘스트의 비중을 낮춘다.
메모리 컨트롤러가 WR2RD 상태에 있는 경우는 메모리의 상태가 Write에서 Read로 변경되는 경우이므로, R/W 예측기는 스케줄러 버퍼에서 메모리의 현재 상태에 대응하는 Write 리퀘스트의 비중을 낮추고, Read 리퀘스트의 비중을 높이는 동작을 수행한다. 따라서 R/W 예측기의 제어 하에, 입력 선택기는 인터페이스 버퍼로부터 출력되는 리퀘스트 중에서 Read 리퀘스트를 선택하여 스케줄러 버퍼에 저장되는 Read 리퀘스트의 비중을 높이고, 출력 선택기는 스케줄러 버퍼로부터 출력되는 리퀘스트 중에서 Write 리퀘스트를 선택하여 현재 스케줄러 버퍼에 저장된 Write 리퀘스트의 비중을 낮춘다.
참고로, 메모리 뱅크가 한 개인 경우를 제외하고 카스 커맨드의 수가 12 이상인 경우에 이상적인 사용 효율을 얻을 수 있으므로, R/W 예측기는 이를 기초로 하여 스케줄러 버퍼에 저장되는 Read 및 Write 리퀘스트의 개수를 조절할 수 있다.
750 단계에서, 위와 같은 과정에 의해 스케줄러 버퍼에서 현재의 메모리 상태에 대응하는 리퀘스트가 소진되면, 메모리의 상태가 변경되고, 그에 따라 메모리 컨트롤러의 상태도 변경된다.
예를 들면, 메모리 컨트롤러가 RD2WR 상태에 있어 스케줄러 버퍼에 저장되는 Write 리퀘스트의 비중을 높이는 과정이 수행되어 스케줄러 버퍼에 저장되어 있던 Read 리퀘스트의 개수가 일정 개수 이하로 감소하면, 이후 메모리는 Write 동작을 수행하도록 상태가 변경되고, 그에 따라 메모리 컨트롤러의 상태 역시 RD2WR 상태에서 WR 상태로 변경된다.
또한 메모리 컨트롤러가 WR2RD 상태에서 스케줄러 버퍼에 저장되는 Write 리퀘스트를 출력하고 인터페이스 버퍼로부터 Read 리퀘스트를 입력 받아 스케줄러 버퍼에 저장되어 있던 Write 리퀘스트의 개수가 일정 개수 이하로 감소하면, 메모리는 Read 동작을 수행하도록 상태가 변경되고, 메모리 컨트롤러의 상태 역시 WR2RD 상태에서 RD 상태로 변경된다.
한편, 730 단계에서 메모리의 상태를 변경하지 않는 것으로 결정하는 경우, R/W 예측기는 760 단계에서 메모리의 현재 상태에 따라 입력 선택기와 출력 선택기를 제어하여 인터페이스 버퍼와 스케줄러 버퍼의 출력 리퀘스트의 종류를 결정한다.
예를 들면, R/W 예측기는 최대 개수인 커맨드가 Read 커맨드이고 메모리의 현재 상태가 Read이면 메모리의 상태를 변경하지 않고 유지하는 것으로 결정한다. 그에 따라 메모리 컨트롤러의 상태도 RD로 유지되며, R/W 예측기는 입력 선택부를 제어하여 인터페이스 버퍼로부터 Read 리퀘스트를 선택하고, 출력 선택부를 제어하여 스케줄러 버퍼로부터 Read 리퀘스트를 선택한다.
또한 R/W 예측기는 최대 개수인 커맨드가 Write 커맨드이고 메모리의 현재 상태가 Write이면 메모리의 상태를 변경하지 않고 유지하는 것으로 결정한다. 그에 따라 메모리 컨트롤러의 상태도 WR로 유지되며, R/W 예측기는 입력 선택부를 제어하여 인터페이스 버퍼로부터 Write 리퀘스트를 선택하고, 출력 선택부를 제어하여 스케줄러 버퍼로부터 Write 리퀘스트를 선택한다.
도 8은 본 발명의 실시예에 따라 Read 및 Write 리퀘스트의 개수가 조절되는 예를 도시한 도면이다. 도 8의 가로축은 시간의 경과, 즉 메모리의 동작 사이클의 경과를 나타내며, 세로축은 스케줄러 버퍼에 저장된 메모리 리퀘스트의 개수를 나타낸다.
도 8을 참조하면, 구간 1(810)은 메모리의 상태가 Read이고, 메모리 컨트롤러 역시 RD 상태인 경우이다. R/W 예측기는 구간 1(810)에 해당하는 시간 동안 메모리의 Read 동작 수행 사이클마다 메모리의 현재 상태를 판단하며, 그 판단 결과에 따라 메모리의 상태를 변환할지 여부를 결정한다.
도 8의 구간 1(810)에서와 같이 메모리의 현재 상태인 Read 동작을 유지할 것으로 결정한 경우, R/W 예측기는 인터페이스 버퍼로부터 Read 리퀘스트를 선택하여 스케줄러 버퍼로 받아들인다. 따라서 스케줄러 버퍼의 Read 리퀘스트 비중이 높아지게 된다.
다음으로 인터페이스 버퍼와 스케줄러 버퍼의 Read 커맨드 개수가 최대가 되어 815에 해당하는 시점에서 R/W 예측기가 메모리의 Read/Write 변환을 수행할 것으로 결정하면, R/W 예측기는 메모리 컨트롤러의 상태를 RD2WR 상태로 변경하고, 구간 2(820)에 해당하는 시간 동안 메모리가 Read 상태에서 Write 상태로 변환되도록 스케줄러 버퍼의 크기를 조절한다.
구간 2(820)에서 메모리는 여전히 Read 동작 상태이므로, R/W 예측기의 제어에 따라 인터페이스 버퍼로부터 Write 리퀘스트가 선택되어 스케줄러 버퍼에 입력되고, 메모리에는 스케줄러 버퍼의 Read 리퀘스트를 기초로 Read 커맨드가 수행된다. 따라서 도 8에 도시된 바와 같이 시간이 경과함에 따라 스케줄러 버퍼의 Read 리퀘스트의 수는 감소하고 Write 리퀘스트의 수는 증가한다.
Write 리퀘스트의 수가 일정 개수에 도달하면, 메모리는 825에 해당하는 시점에서 Read 상태로부터 Write 상태로 전환되고, 메모리 컨트롤러 역시 RD2WR 상태에서 WR 상태로 전환된다. 이후 구간 3(830)에서 메모리에 대해 Write 커맨드가 수행되므로, 스케줄러 버퍼의 Write 리퀘스트의 비중이 증가하게 된다.
이와 같이 본 발명의 실시예에서는 인터페이스 버퍼와 스케줄러 버퍼의 상황에 따라 스케줄러 버퍼의 Read 리퀘스트와 Write 리퀘스트의 비중을 적응적으로 조절하므로, 사용 효율을 높일 수 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.

Claims (16)

  1. 메모리 동작을 제어하는 방법으로서,
    인터페이스 버퍼 및 스케줄러 버퍼에 저장된 리퀘스트의 정보를 기초로 메모리의 주소 별로 커맨드 수를 판단하는 단계;
    상기 커맨드 수가 최대인 커맨드의 종류에 따라 메모리 동작의 제어 상태를 결정하는 단계; 및
    상기 메모리 동작의 제어 상태에 따라 상기 인터페이스 버퍼로부터 상기 스케줄러 버퍼로 전달되는 리퀘스트 및 상기 스케줄러 버퍼로부터 출력되는 리퀘스트의 종류를 결정하는 단계를 포함하고,
    상기 메모리 동작의 제어 상태는 상기 메모리의 리드(read) 동작을 유지하기 위한 상태, 상기 리드 동작에서 상기 메모리의 라이트(write) 동작으로 변경하기 위한 상태, 상기 라이트 동작을 유지하기 위한 상태, 및 상기 라이트 동작에서 상기 리드 동작으로 변경하기 위한 상태를 포함하는 메모리 제어 방법.
  2. 제 1항에 있어서,
    상기 커맨드 수를 판단하는 단계에서, 동일한 로우 어드레스(row address)를 가지는 리퀘스트에 대응한 커맨드의 수를 합산하는 것을 특징으로 하는 메모리 제어 방법.
  3. 삭제
  4. 제 1항에 있어서,
    상기 메모리 동작의 제어 상태를 결정하는 단계에서, 상기 커맨드 수가 최대인 커맨드의 종류가 상기 메모리의 현재 동작과 일치하면 상기 메모리 동작의 제어 상태를 상기 메모리의 현재 동작을 유지하기 위한 상태로 결정하고,
    상기 리퀘스트의 종류를 결정하는 단계에서, 상기 인터페이스 버퍼로부터 상기 스케줄러 버퍼로 전달되는 리퀘스트 및 상기 스케줄러 버퍼로부터 출력되는 리퀘스트의 종류를 상기 메모리의 현재 동작에 대응하는 리퀘스트로 결정하는 것을 특징으로 하는 메모리 제어 방법.
  5. 제 1항에 있어서,
    상기 메모리 동작의 제어 상태를 결정하는 단계에서, 상기 커맨드 수가 최대인 커맨드의 종류가 상기 메모리의 현재 동작과 일치하지 않으면 상기 메모리 동작의 제어 상태를 상기 메모리의 동작을 변경하기 위한 상태로 결정하고,
    상기 리퀘스트의 종류를 결정하는 단계에서, 상기 인터페이스 버퍼로부터 상기 스케줄러 버퍼로 전달되는 리퀘스트의 종류를 상기 메모리의 변경될 동작에 대응하는 리퀘스트로 결정하고, 상기 스케줄러 버퍼로부터 출력되는 리퀘스트의 종류를 상기 메모리의 현재 동작에 대응하는 리퀘스트로 결정하는 것을 특징으로 하는 메모리 제어 방법.
  6. 제 5항에 있어서,
    상기 스케줄러 버퍼에서 상기 메모리의 현재 동작에 대응하는 리퀘스트의 수가 미리 설정된 기준값 이하로 감소하면, 상기 메모리의 동작 및 상기 메모리 동작의 제어 상태를 변경하는 단계;를 더 포함하는 메모리 제어 방법.
  7. 제 1항에 있어서,
    상기 커맨드 수의 판단은 상기 메모리 동작의 제어 상태가 상기 메모리의 현재 동작을 유지하기 위한 상태인 동안 상기 메모리의 동작 사이클마다 수행되는 것을 특징으로 하는 메모리 제어 방법.
  8. 제 1항에 있어서,
    상기 메모리 동작의 제어 상태는 상기 리드 동작을 유지하기 위한 상태, 상기 리드 동작을 라이트 동작으로 변경하기 위한 상태, 상기 라이트 동작을 유지하기 위한 상태, 및 상기 라이트 동작을 상기 리드 동작으로 변경하기 위한 상태가 순차적으로 변경되는 것을 특징으로 하는 메모리 제어 방법.
  9. 메모리 제어 장치로서,
    인터페이스 버퍼 및 스케줄러 버퍼에 저장된 리퀘스트의 정보를 기초로 메모리의 주소 별로 커맨드 수를 판단하고, 상기 커맨드 수가 최대인 커맨드의 종류에 따라 메모리 동작의 제어 상태를 결정하는 상태 예측기; 및
    상기 결정 결과에 따라 상기 인터페이스 버퍼로부터 상기 스케줄러 버퍼로 전달되는 리퀘스트 및 상기 스케줄러 버퍼로부터 출력되는 리퀘스트의 종류를 결정하는 선택기를 포함하고,
    상기 메모리 동작의 제어 상태는 상기 메모리의 리드(read) 동작을 유지하기 위한 상태, 상기 리드 동작에서 상기 메모리의 라이트(write) 동작으로 변경하기 위한 상태, 상기 라이트 동작을 유지하기 위한 상태, 및 상기 라이트 동작에서 상기 리드 동작으로 변경하기 위한 상태를 포함하는 메모리 제어 장치.
  10. 제 9항에 있어서,
    상기 상태 예측기는, 동일한 로우 어드레스(row address)를 가지는 리퀘스트에 대응한 커맨드의 수를 합산하는 것을 특징으로 하는 메모리 제어 장치.
  11. 삭제
  12. 제 9항에 있어서,
    상기 상태 예측기는, 상기 커맨드 수가 최대인 커맨드의 종류가 상기 메모리의 현재 동작과 일치하면 상기 메모리 동작의 제어 상태를 상기 메모리의 현재 동작을 유지하기 위한 상태로 결정하고,
    상기 선택기는, 상기 인터페이스 버퍼로부터 상기 스케줄러 버퍼로 전달되는 리퀘스트 및 상기 스케줄러 버퍼로부터 출력되는 리퀘스트의 종류를 상기 메모리의 현재 동작에 대응하는 리퀘스트로 결정하는 것을 특징으로 하는 메모리 제어 장치.
  13. 제 9항에 있어서,
    상기 상태 예측기는, 상기 커맨드 수가 최대인 커맨드의 종류가 상기 메모리의 현재 동작과 일치하지 않으면 상기 메모리 동작의 제어 상태를 상기 메모리의 동작을 변경하기 위한 상태로 결정하고,
    상기 선택기는, 상기 인터페이스 버퍼로부터 상기 스케줄러 버퍼로 전달되는 리퀘스트의 종류를 상기 메모리의 변경될 동작에 대응하는 리퀘스트로 결정하고, 상기 스케줄러 버퍼로부터 출력되는 리퀘스트의 종류를 상기 메모리의 현재 동작에 대응하는 리퀘스트로 결정하는 것을 특징으로 하는 메모리 제어 장치.
  14. 제 13항에 있어서,
    상기 상태 예측기는, 상기 스케줄러 버퍼에서 상기 메모리의 현재 동작에 대응하는 리퀘스트의 수가 미리 설정된 기준값 이하로 감소하면, 상기 메모리의 동작 및 상기 메모리 동작의 제어 상태를 변경하는 것을 특징으로 하는 메모리 제어 장치.
  15. 제 9항에 있어서,
    상기 상태 예측기는, 상기 메모리 동작의 제어 상태가 상기 메모리의 현재 동작을 유지하기 위한 상태인 동안 상기 메모리의 동작 사이클마다 상기 커맨드 수를 판단하는 것을 특징으로 하는 메모리 제어 장치.
  16. 제 9항에 있어서,
    상기 메모리 동작의 제어 상태는 상기 리드 동작을 유지하기 위한 상태, 상기 리드 동작을 상기 라이트 동작으로 변경하기 위한 상태, 상기 라이트 동작을 유지하기 위한 상태, 및 상기 라이트 동작을 상기 리드 동작으로 변경하기 위한 상태가 순차적으로 변경되는 것을 특징으로 하는 메모리 제어 장치.
KR1020130073612A 2013-06-26 2013-06-26 메모리 동작을 제어하는 방법 및 장치 KR102034626B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020130073612A KR102034626B1 (ko) 2013-06-26 2013-06-26 메모리 동작을 제어하는 방법 및 장치
EP14817499.8A EP3014459B1 (en) 2013-06-26 2014-06-26 Method and apparatus for controlling memory operation
CN201480036497.0A CN105393232B (zh) 2013-06-26 2014-06-26 控制存储器操作的方法和装置
PCT/KR2014/005716 WO2014209045A1 (en) 2013-06-26 2014-06-26 Method and apparatus for controlling memory operation
US14/316,655 US10275371B2 (en) 2013-06-26 2014-06-26 Method and apparatus for controlling memory operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130073612A KR102034626B1 (ko) 2013-06-26 2013-06-26 메모리 동작을 제어하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20150001034A KR20150001034A (ko) 2015-01-06
KR102034626B1 true KR102034626B1 (ko) 2019-10-21

Family

ID=52116796

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130073612A KR102034626B1 (ko) 2013-06-26 2013-06-26 메모리 동작을 제어하는 방법 및 장치

Country Status (5)

Country Link
US (1) US10275371B2 (ko)
EP (1) EP3014459B1 (ko)
KR (1) KR102034626B1 (ko)
CN (1) CN105393232B (ko)
WO (1) WO2014209045A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9639276B2 (en) 2015-03-27 2017-05-02 Intel Corporation Implied directory state updates
JP6160717B1 (ja) * 2016-01-15 2017-07-12 日本電気株式会社 プロセッサ、および、データ転送方法
KR20180109142A (ko) 2017-03-27 2018-10-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10635617B2 (en) 2017-05-19 2020-04-28 Western Digital Technologies, Inc. Context-aware dynamic command scheduling for a data storage system
CN109992205B (zh) * 2019-03-27 2020-06-02 无锡海斯凯尔医学技术有限公司 数据存储的装置、方法及可读存储介质
CN110209597B (zh) * 2019-05-24 2021-10-15 北京百度网讯科技有限公司 处理访问请求的方法、装置、设备和存储介质
US20210200695A1 (en) * 2019-12-27 2021-07-01 Advanced Micro Devices, Inc. Staging memory access requests

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179240A1 (en) * 2010-01-18 2011-07-21 Xelerated Ab Access scheduler

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6452933B1 (en) 1997-02-07 2002-09-17 Lucent Technologies Inc. Fair queuing system with adaptive bandwidth redistribution
US6694424B1 (en) 2000-01-03 2004-02-17 Advanced Micro Devices, Inc. Store load forward predictor training
JP2001283594A (ja) 2000-03-29 2001-10-12 Sharp Corp 不揮発性半導体記憶装置
US6813677B1 (en) * 2000-06-02 2004-11-02 Stmicroelectronics, Inc. Memory decoder and method of operation
KR100424318B1 (ko) * 2002-03-20 2004-03-25 엘지전자 주식회사 가전기기 네트워크 시스템 및 그 제어방법
JP2003317471A (ja) * 2002-04-16 2003-11-07 Mitsubishi Electric Corp 半導体記憶装置
KR100608602B1 (ko) * 2003-12-10 2006-08-03 삼성전자주식회사 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
KR100585116B1 (ko) * 2003-12-13 2006-06-01 삼성전자주식회사 멀티 뱅크 메모리의 억세스 효율을 개선한 아비터, 이를구비한 메모리 억세스 중재 시스템 및 그 방법
US7562364B2 (en) 2003-12-30 2009-07-14 Intel Corporation Adaptive queue scheduling
US7188219B2 (en) 2004-01-30 2007-03-06 Micron Technology, Inc. Buffer control system and method for a memory system having outstanding read and write request buffers
US7149111B2 (en) * 2004-12-17 2006-12-12 Msystems Ltd. Method of handling limitations on the order of writing to a non-volatile memory
US7650472B2 (en) * 2005-07-12 2010-01-19 Electronics And Telecommunications Research Institute Method for reducing memory power consumption
US7698498B2 (en) 2005-12-29 2010-04-13 Intel Corporation Memory controller with bank sorting and scheduling
US7492368B1 (en) * 2006-01-24 2009-02-17 Nvidia Corporation Apparatus, system, and method for coalescing parallel memory requests
US8392633B2 (en) 2008-06-25 2013-03-05 Hewlett-Packard Development Company, L.P. Scheduling requesters of a shared storage resource
US8041856B2 (en) * 2008-09-30 2011-10-18 Lsi Corporation Skip based control logic for first in first out buffer
US20100169519A1 (en) * 2008-12-30 2010-07-01 Yong Zhang Reconfigurable buffer manager
CN101908368A (zh) * 2009-06-04 2010-12-08 威刚科技(苏州)有限公司 电子存储装置及其操作方法
US8539129B2 (en) * 2010-04-14 2013-09-17 Qualcomm Incorporated Bus arbitration techniques to reduce access latency
US8918595B2 (en) * 2011-04-28 2014-12-23 Seagate Technology Llc Enforcing system intentions during memory scheduling
JP5458132B2 (ja) * 2012-03-13 2014-04-02 株式会社東芝 キャッシュ装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179240A1 (en) * 2010-01-18 2011-07-21 Xelerated Ab Access scheduler

Also Published As

Publication number Publication date
EP3014459A1 (en) 2016-05-04
KR20150001034A (ko) 2015-01-06
WO2014209045A1 (en) 2014-12-31
EP3014459A4 (en) 2017-03-29
EP3014459B1 (en) 2019-12-04
CN105393232A (zh) 2016-03-09
US10275371B2 (en) 2019-04-30
US20150006762A1 (en) 2015-01-01
CN105393232B (zh) 2019-06-18

Similar Documents

Publication Publication Date Title
KR102034626B1 (ko) 메모리 동작을 제어하는 방법 및 장치
US10157152B2 (en) Semiconductor device including a global buffer shared by a plurality of memory controllers
US9626307B2 (en) Mobile device and a method of controlling the mobile device
US9563369B2 (en) Fine-grained bandwidth provisioning in a memory controller
CN107204198A (zh) 高速访问双倍速率同步动态随机存储器的控制方法及装置
CN105320608B (zh) 用于控制存储器设备处理访问请求的存储器控制器和方法
CN106681661B (zh) 一种固态硬盘中读写调度方法及装置
EP3477461A1 (en) Devices and methods for data storage management
JP2014154119A (ja) メモリ制御装置及び半導体記憶装置
KR20160096762A (ko) 메모리 컨트롤러
KR101519825B1 (ko) 데이터 처리 장치 및 그 제어 방법
CN101316240A (zh) 一种数据读写的方法和装置
US7047391B2 (en) System and method for re-ordering memory references for access to memory
KR102408350B1 (ko) 에너지 효율을 개선할 수 있는 그래픽 처리 장치를 위한 메모리 컨트롤러 및 이의 메모리 제어 방법
KR101689458B1 (ko) 반도체 메모리 장치 및 반도체 메모리 장치 제어 방법
KR102032892B1 (ko) 반도체 장치 및 그 동작 방법
US10146443B2 (en) Memory controller
CN107885484B (zh) 一种全景音效的缓存设定方法
JP2001256106A (ja) メモリアクセスシステム
JP5678923B2 (ja) ストレージシステム、入出力制御装置、入出力制御方法、および、コンピュータ・プログラム
US9905277B2 (en) Memory controlling method and memory system
JP2010061498A (ja) メモリ制御装置、半導体試験装置およびメモリ制御方法
KR102359404B1 (ko) 메모리 컨트롤러 및 그 동작 방법
JP2003228512A (ja) データ転送装置
CN104281549B (zh) 一种ums中调整写缓冲区的方法及装置

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