KR101993028B1 - 메모리 컨트롤러 - Google Patents

메모리 컨트롤러 Download PDF

Info

Publication number
KR101993028B1
KR101993028B1 KR1020150018016A KR20150018016A KR101993028B1 KR 101993028 B1 KR101993028 B1 KR 101993028B1 KR 1020150018016 A KR1020150018016 A KR 1020150018016A KR 20150018016 A KR20150018016 A KR 20150018016A KR 101993028 B1 KR101993028 B1 KR 101993028B1
Authority
KR
South Korea
Prior art keywords
request
weight
score
queue
memory controller
Prior art date
Application number
KR1020150018016A
Other languages
English (en)
Other versions
KR20160096762A (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 KR1020150018016A priority Critical patent/KR101993028B1/ko
Priority to US14/885,902 priority patent/US9792065B2/en
Publication of KR20160096762A publication Critical patent/KR20160096762A/ko
Application granted granted Critical
Publication of KR101993028B1 publication Critical patent/KR101993028B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Complex Calculations (AREA)

Abstract

본 기술에 의한 메모리 컨트롤러는 호스트로부터의 제공되는 요청을 저장하는 요청 큐, 요청 큐에 포함된 각 요청에 대하여 점수를 계산하고 점수에 따라 요청의 처리 순서를 결정하는 스케줄러; 및 점수를 계산하는데 입력되는 다수의 변수 각각에 대한 가중치를 원소로 하는 가중치 벡터를 생성하는 가중치 생성부를 포함한다.

Description

메모리 컨트롤러{MEMORY CONTROLLER}
본 발명은 메모리 컨트롤러에 관한 것으로서 보다 구체적으로는 다수의 요청 각각에 대하여 점수를 계산하고 점수에 따라 처리 순서를 결정하되 점수를 구성하는 요소들에 대한 가중치를 가변적으로 조절할 수 있는 메모리 컨트롤러에 관한 것이다.
메모리 컨트롤러는 호스트로부터 제공되는 다수의 요청의 처리 순서를 결정하여 메모리 장치를 제어한다.
종래의 메모리 컨트롤러는 다수의 요청의 처리 순서를 결정하기 위하여 FCFS(First Come First Served), FR-FCFS(First Ready Frist Come First Served) 등의 스케줄링 방법을 사용하였다.
FCFS는 호스트로부터 먼저 도달한 요청을 먼저 처리하는 스케줄링 방법이고 FR-FCFS는 FCFS와 동일하되 현재 오픈된 상태의 로우에 대한 요청을 먼저 처리하는 점에서 차이가 있다.
이와 같이 종래의 메모리 컨트롤러는 고정된 기준에 의해서 스케줄링을 수행할 수 있을 뿐 스케줄링 규칙을 가변적으로 제어하지 못하는 문제가 있다.
본 발명은 스케줄링 성능에 영향을 주는 다양한 요소들에 대한 가중치를 가변적으로 제어함으로써 스케줄링 규칙을 동적으로 제어함으로써 그 성능을 향상시킬 수 있는 메모리 컨트롤러를 제공한다.
본 발명의 일 실시예에 의한 메모리 컨트롤러는 호스트로부터의 제공되는 요청을 저장하는 요청 큐, 요청 큐에 포함된 각 요청에 대하여 점수를 계산하고 점수에 따라 요청의 처리 순서를 결정하는 스케줄러; 및 점수를 계산하는데 입력되는 다수의 변수 각각에 대한 가중치를 원소로 하는 가중치 벡터를 생성하는 가중치 생성부를 포함한다.
본 기술을 통해 스케줄링 성능에 영향을 미치는 다양한 요소들에 대한 가중치를 가변적으로 제어하여 점수를 계산하고 이를 기준으로 따라 스케줄링을 수행함으로써 하나의 메모리 컨트롤러에서 다양한 스케줄링 규칙에 대한 성능을 실험할 수 있으며 이에 따라 최적의 스케줄링 규칙을 선택함으로써 성능을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 의한 메모리 컨트롤러를 포함하는 메모리 시스템의 블록도.
도 2는 도 1의 가중치 생성부의 블록도.
도 3은 도 1의 가중치 생성부의 상세 블록도.
도 4는 도 3의 제어부의 동작을 나타낸 순서도.
도 5는 도 1의 스케줄러의 블록도.
도 6은 도 4의 점수 연산부의 상세 블록도.
도 7은 도 6의 변수 결정부의 동작 방식을 설명하는 표.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예에 대해서 상세히 설명한다. 이하의 설명에서 동일한 참조 부호는 실질적으로 동일한 대상을 지시한다.
도 1은 본 발명의 일 실시예에 의한 메모리 컨트롤러(100)를 포함하는 메모리 시스템(1)의 블록도이다.
메모리 컨트롤러(100)는 호스트(1)로부터의 읽기 또는 쓰기 요청을 수신하고 이에 대응하여 메모리 장치(20)를 제어하여 요청된 동작을 수행한다.
메모리 컨트롤러(100)는 호스트(1)로부터 제공된 읽기, 쓰기 요청들을 저장하는 요청 큐(110), 요청 큐(130)의 요청들에 대한 처리 순서를 결정하는 스케줄러(130), 스케줄러(130)에서 선택한 요청에 대응하여 메모리 장치(20)를 제어하는 명령을 생성하는 명령 생성부(140)를 포함한다.
본 발명에 의한 메모리 컨트롤러(100)에서 스케줄러(130)는 요청 큐(110)에 저장된 각 요청들에 대한 점수를 계산하고 계산된 점수에 따라 동작을 수행할 요청을 선택한다.
본 발명에 의한 메모리 컨트롤러(100)는 가중치 벡터를 생성하기 위한 가중치 생성부(120)를 더 포함한다. 가중치 벡터의 각 원소는 스케줄러(130) 내에서 점수 산정에 사용되는 각 변수 값들과 곱해진다.
가중치 생성부(120)는 요청 큐(110)에 저장된 요청들에 대한 상태를 포함하는 메모리 컨트롤러(100)의 동작 상태와 가중치 제어신호를 참조하여 가중치 벡터를 생성한다.
가중치 벡터 및 점수 산정 방식에 대해서는 이하에서 보다 구체적으로 개시한다.
도 2는 도 1의 가중치 생성부(120)의 일 실시예를 나타내는 블록도이다.
가중치 생성부(120)는 상태 관찰부(121), 가중치 결정부(122)를 포함한다.
상태 관찰부(121)는 도 1에 도시된 바와 같이 요청 큐(110)를 포함하는 메모리 컨트롤러(100)의 동작 상태를 관찰하여 각 요청들의 상태를 파악하고 이로부터 상태 벡터를 생성한다.
예를 들어 상태 벡터는 요청 큐에 존재하는 읽기 큐의 길이, 쓰기 큐의 길이, 최근 처리된 일정한 개수(예를 들어 128개)의 요청 중 최대 수행 시간, 현재 처리되고 있는 동작이 읽기 요청에 관한 것인지 혹은 쓰기 요청에 관한 것인지 여부, 프리페치 동작시의 히트율 등을 원소로 포함할 수 있다.
메모리 컨트롤러 분야에서 프리페치 동작은 앞으로 읽기 요청될 것으로 예상되는 데이터를 메모리 장치(20)로부터 미리 읽어오는 동작을 의미하며, 이때 히트율은 미리 읽어온 데이터에 대해서 실제로 읽기 요청이 들어오는 확률에 연관된 개념이다. 프리페치 동작 및 히트율은 관련 기술 분야에서 널리 알려진 개념이므로 구체적인 설명을 생략한다.
가중치 결정부(122)는 가중치 제어신호 또는 상태 벡터를 참조하여 가중치 벡터를 결정할 수 있다. 가중치 제어신호는 메모리 컨트롤러(100) 내부 또는 외부의 다른 구성으로부터 제공될 수 있으며 호스트(10)로부터 제공될 수도 있다. 가중치 제어신호는 가중치 벡터의 각 원소 값들을 직접 지정할 수 있다.
도 3은 도 1의 가중치 생성부(120)의 일 실시예를 나타내는 블록도이다.
본 실시예에서 상태 관찰부(121)는 읽기 큐의 길이(RQL), 쓰기 큐의 길이(WQL), 최근 처리된 일정 개수의 요청 중 최대 처리 시간(MW, 이하 최대 처리 시간으로 표현한다.), 현재 스케줄러(130)에서 선택된 동작이 읽기 요청에 관한 것인지 쓰기 요청에 관한 것인지(RW)를 원소로 포함하는 상태 벡터를 생성한다.
가중치 결정부(122)는 제어부(1221), 제 1 내지 제 3 선택부(1222-1 ~ 1222-3), 제 1 내지 제 3 레지스터(1223-1 ~ 1223-3)를 포함하고 제 1 가중치(w1), 제 2 가중치(w2), 제 3 가중치(w3)를 원소로 하는 가중치 벡터를 출력한다.
제어부(1221)는 가중치 제어신호와 상태 벡터를 참조하여 제 1 내지 제 3 선택부(1222-1 ~ 1222-3)를 제어하는 제 1 내지 제 3 선택 신호(cw1 ~ cw3)를 출력한다.
제 1 선택부(1222-1)는 제 1 선택 신호(cw1)에 따라 지정된 값(1, -1, 0) 또는 제 1 레지스터(1223-1)에 저장된 기존의 제 1 가중치(w1)를 선택하여 새로운 제 1 가중치(w1)를 출력한다.
제 1 가중치(w1)는 점수를 계산하는데 있어서 제 1 요소에 대응하는 제 1 변수(y1) 값과 곱해진다. 이에 따라 제 1 가중치(w1)는 점수에 있어서 제 1 요소의 영향력을 결정하는 인자가 된다. 이에 대해서는 이하에서 도 6을 참조하여 보다 구체적으로 개시한다.
도면에서 미리 정해진 값(1, -1, 0)은 예시된 값으로서 실시예에 따라 변경될 수 있다. 예를 들어 제 1 가중치(w1)가 0인 것은 점수를 산정하는데 제 1 요소를 고려하지 않는다는 것을 의미하고, 제 1 가중치(w1)가 음수인 것은 점수를 산정하는데 제 1 요소를 제 1 가중치에 대응하는 만큼 감점 요인으로 고려한다는 것을 의미하고, 제 1 가중치(w1)가 양수인 것은 점수를 산정하는데 있어서 제 1 요소를 가중치에 대응하는 만큼 가점 요인으로 고려한다는 것을 의미한다.
제 2 선택부(1222-2) 및 제 3 선택부(1222-3)의 구성 및 동작은 제 1 선택부(1222-1)와 실질적으로 동일하므로 구체적인 설명을 생략한다.
도 4는 도 3의 제어부(1221)의 동작을 예시한 순서도이다.
본 실시예에서 가중치 제어신호는 각 가중치(w1 ~ w3)의 값을 직접 지정하는 역할을 하며 상태 벡터에 우선하여 고려된다.
제어부(1221)는 제 1 선택 신호(cw1)를 선택하는 동작(S10 ~ S15), 제 2 선택 신호(cw2)를 선택하는 동작(S20 ~ S28), 제 3 선택 신호(cw3)를 결정하는 동작(S30 ~ S38)을 수행한다.
먼저 가중치 제어신호에 의한 제 1 가중치(w1) 내지 제 3 가중치(w3)가 0으로 초기화된다(S1).
먼저 제 1 선택 신호(cw1)를 결정하는 동작을 설명한다.
가중치 제어신호에 의한 제 1 가중치(w1)의 값이 0인지 판단한다(S10).
가중치 제어신호에 의한 제 1 가중치(w1)의 값이 0이면 제 1 선택 신호(cw1)의 값을 11로 지정하고(S15) 그렇지 않으면 현재 제 1 가중치(w1)의 값이 0인지 판단한다.
제 1 선택 신호(cw1)의 값이 11로 지정되면 제 1 선택부(1222-1)는 0을 선택하고 이는 제 1 레지스터(1223-1)에 저장된다.
현재 제 1 가중치(w1)의 값이 0이면 제 1 선택 신호(cw1)의 값을 10으로 지정하고(S14) 그렇지 않으면 제 1 선택 신호(cw1)의 값을 00으로 지정한다(S12).
제 1 선택 신호(cw1)의 값이 10으로 지정되면 제 1 선택부(1222-1)는 기존의 제 1 가중치(w1)를 선택하고 제 1 선택 신호(cw1)의 값이 00으로 지정되면 제 1 선택부(1222-1)는 1을 선택하여 제 1 레지스터(1223-1)에 저장된다.
제 1 선택 신호(cw1)의 값이 정해지면 단계(S10)로 돌아가 전술한 동작을 반복한다. 이러한 반복은 요청 큐(110)의 정보가 갱신되는 주기에 따라 수행될 수 있다.
다음으로 제 2 선택 신호(cw2)를 선택하는 동작을 설명한다.
가중치 제어신호에 의한 제 2 가중치(w2)의 값이 0인지 판단한다(S20).
가중치 제어신호에 의한 제 2 가중치(w2)의 값이 0이면 제 2 선택 신호(cw2)의 값을 11로 지정하고(S28) 그렇지 않으면 현재 메모리 장치에 대하여 수행하는 동작이 읽기 요청에 관한 것인지 판단한다(S21).
현재 메모리 장치에 대하여 수행하는 동작이 읽기 요청에 관한 것이면 읽기 큐의 길이(RQL)가 제 1 임계점(TH1)을 초과하는지 판단하고(S22) 그렇지 않으면 제 2 선택 신호(cw2)의 값을 10으로 지정한다(S25).
읽기 큐의 길이(RQL)이 제 1 임계점(TH1)을 초과하면 최대 처리 시간(WM)이 제 2 임계점(TH2)을 초과하는지 판단하고(S23) 그렇지 않으면 제 2 선택 신호(cw2)의 값을 10으로 지정한다(S25).
최대 처리 시간(WM)이 제 2 임계점(TH2)을 초과하면 제 2 선택 신호(cw2)의 값을 00으로 지정하고(S27) 그렇지 않으면 최대 처리 시간(WM)이 제 3 임계점(TH3) 미만인지 판단한다(S24).
최대 처리 시간(WM)이 제 3 임계점(TH3) 미만이면 제 2 선택 신호(cw2)의 값을 01로 지정하고(S26) 그렇지 않으면 제 2 선택 신호의 값을 10으로 지정한다(S25).
제 2 선택 신호(cw2)의 값이 정해지면 단계(S20)로 돌아가 전술한 동작을 반복한다. 이러한 반복은 요청 큐(110)의 정보가 갱신되는 주기에 따라 수행될 수 있다.
마지막으로 제 3 선택 신호(cw3)를 선택하는 동작을 설명한다.
가중치 제어신호에 의한 제 3 가중치(w3)의 값이 0인지 판단한다(S30).
가중치 제어신호에 의한 제 3 가중치(w3)의 값이 0이면 제 3 선택 신호(cw3)의 값을 11로 지정하고(S38) 그렇지 않으면 현재 메모리 장치에 대하여 수행하는 동작이 읽기 요청에 관한 것인지 판단한다(S31).
현재 메모리 장치에 대하여 수행하는 동작이 읽기 요청에 관한 것이면 읽기 큐의 길이(RQL)이 제 1 임계점(TH1)을 초과하는지 판단하고(S32) 그렇지 않으면 제 3 선택 신호(cw3)의 값을 10으로 지정한다(S35).
읽기 큐의 길이(RQL)이 제 1 임계점(TH1)을 초과하면 최대 처리 시간(WM)이 제 2 임계점(TH2)을 초과하는지 판단하고(S33) 그렇지 않으면 제 3 선택 신호(cw3)의 값을 10으로 지정한다(S35).
최대 처리 시간(WM)이 제 2 임계점(TH2)을 초과하면 제 3 선택 신호(cw3)의 값을 01로 지정하고(S37) 그렇지 않으면 최대 처리 시간(WM)이 제 3 임계점(TH3) 미만인지 판단한다(S34).
최대 처리 시간(WM)이 제 3 임계점(TH3) 미만이면 제 3 선택 신호(cw3)의 값을 00으로 지정하고(S36) 그렇지 않으면 제 3 선택 신호의 값을 10으로 지정한다(S25).
제 3 선택 신호(cw3)의 값이 정해지면 단계(S30)로 돌아가 전술한 동작을 반복한다. 이러한 반복은 요청 큐(110)의 정보가 갱신되는 주기에 따라 수행될 수 있다.
위에서 제 1 내지 제 3 임계점(TH1, TH2, TH3)은 통상의 기술자에 의해 선택될 수 있는 임의의 상수이다.
도 5는 도 1의 스케줄러(130)의 일 실시예를 나타내는 블록도이다.
본 실시예에서 스케줄러(130)는 점수 연산부(131)와 요청 선택부(132)를 포함할 수 있다.
점수 연산부(131)는 요청 큐(110)에서 제공되는 정보로부터 산출되는 변수 값들과 가중치 생성부(120)에서 제공되는 가중치 벡터를 이용하여 점수 벡터를 생성한다.
점수 벡터는 요청 큐(110)에 저장된 각 요청에 대응하는 점수들을 원소로 포함한다. 요청 선택부(132)는 점수 벡터에 포함된 점수들 중 예를 들어 최대 점수에 대응하는 요청을 선택하여 출력한다.
점수 연산부(131)는 각 요청에 대응하는 점수를 산출하기 위하여 변수 값들을 결정하고 변수 값들과 가중치 벡터의 원소들을 연산하여 점수를 산출한다.
도 6은 도 5의 점수 연산부(131)를 나타내는 블록도이다.
점수 연산부(131)는 요청 큐(110)의 정보를 이용하여 각 요청에 대응하여 변수를 결정하는 변수 결정부(1311)와 변수 결정부(1311)에서 출력된 변수 값들(y11, y12, y13, ...., yN1, yN2, yN3)과 가중치 벡터의 원소들(w1, w2, w3)을 이용하여 점수를 산출하는 연산부(1312-1 ~ 1312-N)를 포함한다. 이에 따라 제 1 내지 제 3 가중치(w1, w2, w3)의 값에 따라 점수가 달라질 수 있다.
본 실시예에서는 스케줄링시 3개의 요소를 고려함으로써 각 요청에 대하여 결정되는 변수의 개수가 3개로 주어진다. 스케줄링시 고려할 요소가 증감되는 경우 이에 따라 변수의 개수 및 가중치의 개수가 증감될 수 있다.
변수 결정부(1311)에서 각 변수 값들을 결정하는 방법은 미리 결정될 수 있다.
도 7은 도 6의 변수 결정부(1311)에서 각 변수 값들을 결정하는 방법의 일 예를 나타내는 도표이다.
본 실시예에서 변수(y1)의 값은 0, 1 또는 변수(y1)의 이전 값 중 하나로 선택된다. 예를 들어 현재 쓰기 큐의 길이(WQL)가 하한선(LW) 미만이고 대응하는 요청의 종류가 읽기 요청이면 변수(y1) 값은 1로 정해지고 대응하는 요청의 종류가 쓰기 요청이면 변수(y1)의 값은 0으로 정해진다.
또한 현재 쓰기 큐의 길이(WQL)가 상한선(HW) 이상이고 대응하는 요청의 종류가 읽기 요청이면 변수(y1) 값은 0으로 정해지고 대응하는 요청의 종류가 쓰기 요청이면 변수(y1)의 값은 1로 정해진다.
또한 현재 쓰기 큐의 길이(WQL)가 하한선(LW) 이상 상한선(HW) 미만이면 변수(y1)의 값은 이전 값으로 정해진다.
위에서 상한선(HW)과 하한선(LW)은 통상의 기술자에 의해 임의로 선택될 수 있는 상수이다.
본 실시예에서 변수(y2)의 값은 0 또는 해당 요청이 대기한 사이클 수(WC) 중 하나로 선택된다.
예를 들어 대응하는 요청을 처리하기 다음에 실행할 명령이 액티브 명령(ACT) 또는 칼럼 명령(COL)이면 변수(y2)의 값은 대기 사이클 수(WC)로 정해지고 프리차지 명령(PRE)이면 변수(y2)의 값은 0으로 정해진다.
본 실시예에서 변수(y3)의 값은 0, 1 또는 2로 선택된다.
예를 들어 대응하는 요청을 처리하기 다음에 실행할 명령이 액티브 명령(ACT) 또는 프리차지 명령(COL)이면 변수(y3)의 값은 0으로 정해지고 다음에 실행할 명령이 칼럼 명령(COL)이면 변수(y3)의 값은 대응하는 요청이 읽기 요청인 경우 2 쓰기 요청인 경우 1로 정해진다.
변수 결정부(1311)는 위와 같은 동작을 수행하여 각 요청들에 대응하는 변수 값들을 결정한 후 이를 연산부(1312-1 ~ 1312-N)에 제공한다.
이상에서 살펴본 바와 같이 각 요청들에 대한 점수는 변수 값들과 가중치를 연산하여 얻어지므로 가중치를 조절함으로써 각 요청의 점수가 달라져 실질적으로 스케줄링 규칙을 가변적으로 적용하는 효과가 있다.
예를 들어 변수 값이 도 7과 같이 결정되는 경우 제 3 가중치(w3)의 값을 0으로 설정하면 스케줄러(120)는 FCFS(First Come First Served) 규칙으로 스케줄링 동작을 수행하고, 제 2 가중치(w2)의 값을 0으로 설정하면 스케줄러(120)는 FR-FCFS(First Ready - First Come First Served) 규칙으로 스케줄링 동작을 수행하게 된다.
이와 같이 본 발명은 스케줄링 규칙의 자유로운 변경을 통해 시스템의 성능을 최적화하는데 있어서 기본이 되는 기술적 사상을 제공한다.
이상에서 도면을 참조하여 본 발명의 실시예를 개시하였다. 이상의 개시는 설명을 위한 것으로서 본 발명의 권리범위를 한정하는 것은 아니며, 본 발명의 권리범위는 이하의 특허청구범위에 문언적으로 기재된 범위와 그 균등범위에 의해 정해진다.
10: 호스트
100: 메모리 컨트롤러
110: 요청 큐
120: 가중치 생성부
121: 상태 관찰부
122: 가중치 결정부
1221: 제어부
1222-1: 제 1 선택부
1222-2: 제 2 선택부
1222-3: 제 3 선택부
1223-1: 제 1 레지스터
1223-2: 제 2 레지스터
1223-3: 제 3 레지스터
130: 스케줄러
131: 점수 연산부
1311: 변수 결정부
1312-1 ~1312-N: 연산부
132: 요청 선택부
140: 명령 생성부
20: 메모리 장치

Claims (11)

  1. 호스트로부터 제공되는 요청을 저장하는 요청 큐;
    상기 요청 큐에 포함된 각 요청에 대하여 점수를 계산하고 상기 점수에 따라 상기 요청의 처리 순서를 결정하는 스케줄러; 및
    상기 점수를 계산하는데 입력되는 다수의 변수 각각에 대한 가중치를 원소로 하는 가중치 벡터를 생성하는 가중치 생성부
    를 포함하는 메모리 컨트롤러로서,
    상기 스케줄러는 상기 각 요청에 따라 달라지는 다수의 변수와 상기 각 요청마다 공통되는 상기 가중치 벡터를 이용하여 상기 점수를 계산하고,
    상기 스케줄러는 상기 요청 큐의 상태 또는 상기 각 요청의 상태에 따라 상기 다수의 변수의 값을 결정하며,
    상기 가중치 생성부는 상기 요청 큐의 정보가 갱신될 때 상기 메모리 컨트롤러의 동작 상태 또는 가중치 제어 신호에 따라 상기 가중치 벡터를 조절하는 메모리 컨트롤러.
  2. 청구항 1에 있어서, 상기 가중치 생성부는
    상기 메모리 컨트롤러의 상기 동작 상태로부터 도출되는 인자를 원소로 포함하는 상태 벡터를 생성하는 상태 관찰부; 및
    상기 상태 벡터 또는 상기 가중치 제어신호에 따라 상기 가중치 벡터를 결정하는 가중치 결정부
    를 포함하는 메모리 컨트롤러.
  3. 청구항 2에 있어서, 상기 인자는 읽기 큐의 길이, 쓰기 큐의 길이, 상기 스케줄러에서 현재 선택한 요청의 종류, 최근 수행된 일정 개수의 요청들에 대한 처리 시간 중 최대 처리 시간 또는 프리페치 동작 시의 히트율을 포함하는 그룹으로부터 선택되는 메모리 컨트롤러.
  4. 청구항 2에 있어서, 상기 가중치 결정부는
    상기 상태 벡터, 상기 가중치 제어신호 또는 상기 가중치 벡터의 현재 값에 따라 다수의 선택 신호를 생성하는 제어부; 및
    상기 다수의 선택 신호에 따라 하나 또는 둘 이상의 상수 또는 상기 가중치 벡터의 현재 값을 포함하는 값들로부터 상기 가중치 벡터의 다음 값을 결정하는 선택부
    를 포함하는 메모리 컨트롤러.
  5. 청구항 4에 있어서, 상기 제어부는 상기 가중치 제어신호에 따라 상기 하나 또는 둘 이상의 상수 중 적어도 하나가 선택되도록 상기 다수의 선택 신호를 생성하는 메모리 컨트롤러.
  6. 청구항 4에 있어서, 상기 가중치 벡터의 현재 값을 저장하는 레지스터를 더 포함하는 메모리 컨트롤러.
  7. 청구항 1에 있어서, 상기 스케줄러는
    상기 요청 큐에 저장된 각 요청에 대하여 상기 다수의 변수와 상기 가중치 벡터를 연산하여 상기 점수를 연산하는 점수 연산부; 및
    상기 점수에 따라 상기 요청 큐에 저장된 요청 중 어느 하나를 선택하는 요청 선택부
    를 포함하는 메모리 컨트롤러.
  8. 청구항 7에 있어서, 상기 점수 연산부는 상기 요청 큐의 상태 또는 상기 각 요청의 상태에 따라 상기 각 요청에 대응하는 상기 다수의 변수를 결정하는 변수 결정부 및
    상기 변수 결정부에서 출력된 상기 다수의 변수와 상기 가중치 벡터를 연산하여 상기 점수를 출력하는 연산부
    를 포함하는 메모리 컨트롤러.
  9. 청구항 8에 있어서, 상기 연산부는 상기 다수의 변수를 원소로 하는 벡터와 상기 가중치 벡터를 내적하여 상기 점수를 출력하는 메모리 컨트롤러.
  10. 청구항 8에 있어서, 상기 요청 큐의 상태는 읽기 큐의 길이 또는 쓰기 큐의 길이를 포함하는 메모리 컨트롤러.
  11. 청구항 8에 있어서, 상기 각 요청의 상태는 상기 각 요청의 대기 사이클 수, 상기 각 요청의 종류 또는 상기 각 요청의 실행을 위하여 메모리 장치에 제공할 명령의 종류를 포함하는 메모리 컨트롤러.

KR1020150018016A 2015-02-05 2015-02-05 메모리 컨트롤러 KR101993028B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150018016A KR101993028B1 (ko) 2015-02-05 2015-02-05 메모리 컨트롤러
US14/885,902 US9792065B2 (en) 2015-02-05 2015-10-16 Memory controller scheduling requests according to scores

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150018016A KR101993028B1 (ko) 2015-02-05 2015-02-05 메모리 컨트롤러

Publications (2)

Publication Number Publication Date
KR20160096762A KR20160096762A (ko) 2016-08-17
KR101993028B1 true KR101993028B1 (ko) 2019-06-26

Family

ID=56566838

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150018016A KR101993028B1 (ko) 2015-02-05 2015-02-05 메모리 컨트롤러

Country Status (2)

Country Link
US (1) US9792065B2 (ko)
KR (1) KR101993028B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10430586B1 (en) * 2016-09-07 2019-10-01 Fireeye, Inc. Methods of identifying heap spray attacks using memory anomaly detection
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
KR20190047451A (ko) * 2017-10-27 2019-05-08 에스케이하이닉스 주식회사 저항 변화 메모리 장치를 구비한 반도체 메모리 시스템 및 그 구동 방법
US10705885B2 (en) * 2018-01-31 2020-07-07 Palo Alto Networks, Inc. Autoscaling of data processing computing systems based on predictive queue length
GB2578600B (en) * 2018-10-31 2021-10-13 Advanced Risc Mach Ltd Memory transaction request management
US11526306B1 (en) * 2021-05-18 2022-12-13 Micron Technology, Inc. Command scheduling in a memory subsystem according to a selected scheduling ordering

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000295247A (ja) 1999-04-09 2000-10-20 Nec Corp キューイングシステムにおけるスケジューリング方法及びシューティングブランクス・スイッチ
JP2002358259A (ja) 2001-05-31 2002-12-13 Toshiba Corp 優先度制御機能を有するファイルサーバ、同サーバにおけるファイルアクセス方法及びファイルアクセスプログラム
US20100278190A1 (en) * 2009-04-29 2010-11-04 Yip Thomas C Hierarchical pipelined distributed scheduling traffic manager

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761475A (en) * 1994-12-15 1998-06-02 Sun Microsystems, Inc. Computer processor having a register file with reduced read and/or write port bandwidth
US5881264A (en) 1996-01-31 1999-03-09 Kabushiki Kaisha Toshiba Memory controller and memory control system
US6499090B1 (en) 1999-12-28 2002-12-24 Intel Corporation Prioritized bus request scheduling mechanism for processing devices
US6324624B1 (en) * 1999-12-28 2001-11-27 Intel Corporation Read lock miss control and queue management
US6785793B2 (en) * 2001-09-27 2004-08-31 Intel Corporation Method and apparatus for memory access scheduling to reduce memory access latency
US7587549B1 (en) * 2005-09-13 2009-09-08 Agere Systems Inc. Buffer management method and system with access grant based on queue score
US8250227B2 (en) * 2007-03-02 2012-08-21 International Business Machines Corporation Providing different rates to different users of a download service
US20100325327A1 (en) 2009-06-17 2010-12-23 Freescale Semiconductor, Inc. Programmable arbitration device and method therefor
US8732538B2 (en) * 2011-03-10 2014-05-20 Icform, Inc. Programmable data storage management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000295247A (ja) 1999-04-09 2000-10-20 Nec Corp キューイングシステムにおけるスケジューリング方法及びシューティングブランクス・スイッチ
JP2002358259A (ja) 2001-05-31 2002-12-13 Toshiba Corp 優先度制御機能を有するファイルサーバ、同サーバにおけるファイルアクセス方法及びファイルアクセスプログラム
US20100278190A1 (en) * 2009-04-29 2010-11-04 Yip Thomas C Hierarchical pipelined distributed scheduling traffic manager

Also Published As

Publication number Publication date
US9792065B2 (en) 2017-10-17
US20160231961A1 (en) 2016-08-11
KR20160096762A (ko) 2016-08-17

Similar Documents

Publication Publication Date Title
KR101993028B1 (ko) 메모리 컨트롤러
US10653960B2 (en) Method for controlling interaction with virtual target, terminal, and storage medium
US9262321B2 (en) Adjustment of destage rate based on read and write response time requirements
US20020038391A1 (en) Storage control apparatus
JP4504422B2 (ja) イメージリソースをローディングする方法及びイメージリソースローディングシステム
US11938400B2 (en) Object control method and apparatus, storage medium, and electronic apparatus
EP3377432B1 (en) A method and an apparatus for determining an allocation decision for at least one elevator
US10275371B2 (en) Method and apparatus for controlling memory operation
KR20130019674A (ko) 단말 및 그 단말에서 어플리케이션 수행 방법
US11537441B2 (en) Method and apparatus for balancing loads, and computer-readable storage medium
CN112305907A (zh) 自适应pid温度控制方法、装置及设备
KR20220027964A (ko) 성능 보장 전력 관리를 갖는 실시간 gpu 렌더링
US10409350B2 (en) Instruction optimization using voltage-based functional performance variation
KR20220059194A (ko) 대상 객체에 적응적인 객체 추적 방법 및 장치
KR20110097859A (ko) 장치와, 이 장치의 전력 소비를 관리하는 방법 및 컴퓨터 판독가능 저장 매체
JP2010271795A (ja) データ処理装置及びその処理方法
JP5686548B2 (ja) 情報処理装置、情報処理方法、プログラム
US20120297169A1 (en) Data processing apparatus, control method therefor, and non-transitory computer-readable storage medium
US9430421B2 (en) Interrupt signal arbitration
CN114310879A (zh) 一种机器人控制方法、控制柜及系统
JPWO2021229626A5 (ko)
JP5678923B2 (ja) ストレージシステム、入出力制御装置、入出力制御方法、および、コンピュータ・プログラム
JP2018521421A (ja) ベクトル被演算子ビットサイズの制御
JP7175124B2 (ja) 情報処理装置、位置予測方法及び位置予測プログラム
US10120730B2 (en) Load control device and load control method

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