KR20160096762A - Memory controller - Google Patents
Memory controller Download PDFInfo
- Publication number
- KR20160096762A KR20160096762A KR1020150018016A KR20150018016A KR20160096762A KR 20160096762 A KR20160096762 A KR 20160096762A KR 1020150018016 A KR1020150018016 A KR 1020150018016A KR 20150018016 A KR20150018016 A KR 20150018016A KR 20160096762 A KR20160096762 A KR 20160096762A
- Authority
- KR
- South Korea
- Prior art keywords
- request
- weight
- score
- queue
- memory controller
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement 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
본 발명은 메모리 컨트롤러에 관한 것으로서 보다 구체적으로는 다수의 요청 각각에 대하여 점수를 계산하고 점수에 따라 처리 순서를 결정하되 점수를 구성하는 요소들에 대한 가중치를 가변적으로 조절할 수 있는 메모리 컨트롤러에 관한 것이다.The present invention relates to a memory controller, and more particularly, to a memory controller capable of calculating a score for each of a plurality of requests and determining a processing order according to a score, wherein a weight for elements constituting a score can be variably adjusted .
메모리 컨트롤러는 호스트로부터 제공되는 다수의 요청의 처리 순서를 결정하여 메모리 장치를 제어한다.The memory controller controls the memory device by determining the processing order of a plurality of requests provided from the host.
종래의 메모리 컨트롤러는 다수의 요청의 처리 순서를 결정하기 위하여 FCFS(First Come First Served), FR-FCFS(First Ready Frist Come First Served) 등의 스케줄링 방법을 사용하였다.Conventional memory controllers use scheduling methods such as FCFS (First Come First Served) and FR-FCFS (First Ready Frist Come First Served) to determine the processing order of a large number of requests.
FCFS는 호스트로부터 먼저 도달한 요청을 먼저 처리하는 스케줄링 방법이고 FR-FCFS는 FCFS와 동일하되 현재 오픈된 상태의 로우에 대한 요청을 먼저 처리하는 점에서 차이가 있다.FCFS is a scheduling method that first processes a request arriving from a host first, and FR-FCFS is the same as FCFS, except that it processes a request for a row that is currently open.
이와 같이 종래의 메모리 컨트롤러는 고정된 기준에 의해서 스케줄링을 수행할 수 있을 뿐 스케줄링 규칙을 가변적으로 제어하지 못하는 문제가 있다.Thus, the conventional memory controller can perform scheduling based on a fixed reference, but can not variably control the scheduling rule.
본 발명은 스케줄링 성능에 영향을 주는 다양한 요소들에 대한 가중치를 가변적으로 제어함으로써 스케줄링 규칙을 동적으로 제어함으로써 그 성능을 향상시킬 수 있는 메모리 컨트롤러를 제공한다.The present invention provides a memory controller capable of improving performance by dynamically controlling scheduling rules by variably controlling weights of various factors affecting scheduling performance.
본 발명의 일 실시예에 의한 메모리 컨트롤러는 호스트로부터의 제공되는 요청을 저장하는 요청 큐, 요청 큐에 포함된 각 요청에 대하여 점수를 계산하고 점수에 따라 요청의 처리 순서를 결정하는 스케줄러; 및 점수를 계산하는데 입력되는 다수의 변수 각각에 대한 가중치를 원소로 하는 가중치 벡터를 생성하는 가중치 생성부를 포함한다.A memory controller according to an embodiment of the present invention includes a request queue for storing a request from a host, a scheduler for calculating a score for each request included in the request queue and determining a processing order of the request according to a score; And a weight generator for generating a weight vector having elements as weights for the plurality of variables input to calculate the score.
본 기술을 통해 스케줄링 성능에 영향을 미치는 다양한 요소들에 대한 가중치를 가변적으로 제어하여 점수를 계산하고 이를 기준으로 따라 스케줄링을 수행함으로써 하나의 메모리 컨트롤러에서 다양한 스케줄링 규칙에 대한 성능을 실험할 수 있으며 이에 따라 최적의 스케줄링 규칙을 선택함으로써 성능을 향상시킬 수 있다.Through the present technology, we can experimentally evaluate the performance of various scheduling rules in a single memory controller by calculating the score by variably controlling the weights of the various factors affecting the scheduling performance, and performing the scheduling according to the scores. Accordingly, performance can be improved by selecting an optimal scheduling rule.
도 1은 본 발명의 일 실시예에 의한 메모리 컨트롤러를 포함하는 메모리 시스템의 블록도.
도 2는 도 1의 가중치 생성부의 블록도.
도 3은 도 1의 가중치 생성부의 상세 블록도.
도 4는 도 3의 제어부의 동작을 나타낸 순서도.
도 5는 도 1의 스케줄러의 블록도.
도 6은 도 4의 점수 연산부의 상세 블록도.
도 7은 도 6의 변수 결정부의 동작 방식을 설명하는 표.1 is a block diagram of a memory system including a memory controller in accordance with an embodiment of the present invention.
2 is a block diagram of a weight generation unit of FIG.
3 is a detailed block diagram of the weight generation unit of FIG.
FIG. 4 is a flowchart showing the operation of the control unit of FIG. 3;
5 is a block diagram of the scheduler of FIG.
FIG. 6 is a detailed block diagram of the score computing unit of FIG. 4;
FIG. 7 is a table for explaining the operation of the variable determining unit of FIG. 6;
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예에 대해서 상세히 설명한다. 이하의 설명에서 동일한 참조 부호는 실질적으로 동일한 대상을 지시한다. Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the following description, the same reference numerals denote substantially the same objects.
도 1은 본 발명의 일 실시예에 의한 메모리 컨트롤러(100)를 포함하는 메모리 시스템(1)의 블록도이다.1 is a block diagram of a
메모리 컨트롤러(100)는 호스트(1)로부터의 읽기 또는 쓰기 요청을 수신하고 이에 대응하여 메모리 장치(20)를 제어하여 요청된 동작을 수행한다.The
메모리 컨트롤러(100)는 호스트(1)로부터 제공된 읽기, 쓰기 요청들을 저장하는 요청 큐(110), 요청 큐(130)의 요청들에 대한 처리 순서를 결정하는 스케줄러(130), 스케줄러(130)에서 선택한 요청에 대응하여 메모리 장치(20)를 제어하는 명령을 생성하는 명령 생성부(140)를 포함한다.The
본 발명에 의한 메모리 컨트롤러(100)에서 스케줄러(130)는 요청 큐(110)에 저장된 각 요청들에 대한 점수를 계산하고 계산된 점수에 따라 동작을 수행할 요청을 선택한다.In the
본 발명에 의한 메모리 컨트롤러(100)는 가중치 벡터를 생성하기 위한 가중치 생성부(120)를 더 포함한다. 가중치 벡터의 각 원소는 스케줄러(130) 내에서 점수 산정에 사용되는 각 변수 값들과 곱해진다. The
가중치 생성부(120)는 요청 큐(110)에 저장된 요청들에 대한 상태를 포함하는 메모리 컨트롤러(100)의 동작 상태와 가중치 제어신호를 참조하여 가중치 벡터를 생성한다.The
가중치 벡터 및 점수 산정 방식에 대해서는 이하에서 보다 구체적으로 개시한다.The weight vector and the scoring method will be described in more detail below.
도 2는 도 1의 가중치 생성부(120)의 일 실시예를 나타내는 블록도이다.2 is a block diagram illustrating an embodiment of the
가중치 생성부(120)는 상태 관찰부(121), 가중치 결정부(122)를 포함한다.The
상태 관찰부(121)는 도 1에 도시된 바와 같이 요청 큐(110)를 포함하는 메모리 컨트롤러(100)의 동작 상태를 관찰하여 각 요청들의 상태를 파악하고 이로부터 상태 벡터를 생성한다.The
예를 들어 상태 벡터는 요청 큐에 존재하는 읽기 큐의 길이, 쓰기 큐의 길이, 최근 처리된 일정한 개수(예를 들어 128개)의 요청 중 최대 수행 시간, 현재 처리되고 있는 동작이 읽기 요청에 관한 것인지 혹은 쓰기 요청에 관한 것인지 여부, 프리페치 동작시의 히트율 등을 원소로 포함할 수 있다. For example, the state vector may include a length of a read queue existing in a request queue, a length of a write queue, a maximum execution time during a request of a predetermined number of recently processed (for example, 128) Whether it is about the write request or the write request, and the hit rate during the prefetch operation.
메모리 컨트롤러 분야에서 프리페치 동작은 앞으로 읽기 요청될 것으로 예상되는 데이터를 메모리 장치(20)로부터 미리 읽어오는 동작을 의미하며, 이때 히트율은 미리 읽어온 데이터에 대해서 실제로 읽기 요청이 들어오는 확률에 연관된 개념이다. 프리페치 동작 및 히트율은 관련 기술 분야에서 널리 알려진 개념이므로 구체적인 설명을 생략한다.In the memory controller field, the prefetch operation refers to an operation of prefetching data expected to be requested to be read from the
가중치 결정부(122)는 가중치 제어신호 또는 상태 벡터를 참조하여 가중치 벡터를 결정할 수 있다. 가중치 제어신호는 메모리 컨트롤러(100) 내부 또는 외부의 다른 구성으로부터 제공될 수 있으며 호스트(10)로부터 제공될 수도 있다. 가중치 제어신호는 가중치 벡터의 각 원소 값들을 직접 지정할 수 있다.The
도 3은 도 1의 가중치 생성부(120)의 일 실시예를 나타내는 블록도이다.3 is a block diagram showing an embodiment of the
본 실시예에서 상태 관찰부(121)는 읽기 큐의 길이(RQL), 쓰기 큐의 길이(WQL), 최근 처리된 일정 개수의 요청 중 최대 처리 시간(MW, 이하 최대 처리 시간으로 표현한다.), 현재 스케줄러(130)에서 선택된 동작이 읽기 요청에 관한 것인지 쓰기 요청에 관한 것인지(RW)를 원소로 포함하는 상태 벡터를 생성한다.In the present embodiment, the
가중치 결정부(122)는 제어부(1221), 제 1 내지 제 3 선택부(1222-1 ~ 1222-3), 제 1 내지 제 3 레지스터(1223-1 ~ 1223-3)를 포함하고 제 1 가중치(w1), 제 2 가중치(w2), 제 3 가중치(w3)를 원소로 하는 가중치 벡터를 출력한다.The
제어부(1221)는 가중치 제어신호와 상태 벡터를 참조하여 제 1 내지 제 3 선택부(1222-1 ~ 1222-3)를 제어하는 제 1 내지 제 3 선택 신호(cw1 ~ cw3)를 출력한다. The
제 1 선택부(1222-1)는 제 1 선택 신호(cw1)에 따라 지정된 값(1, -1, 0) 또는 제 1 레지스터(1223-1)에 저장된 기존의 제 1 가중치(w1)를 선택하여 새로운 제 1 가중치(w1)를 출력한다.The first selector 1222-1 selects the value (1, -1, 0) specified in accordance with the first selection signal cw1 or the existing first weight w1 stored in the first register 1223-1 And outputs a new first weight w1.
제 1 가중치(w1)는 점수를 계산하는데 있어서 제 1 요소에 대응하는 제 1 변수(y1) 값과 곱해진다. 이에 따라 제 1 가중치(w1)는 점수에 있어서 제 1 요소의 영향력을 결정하는 인자가 된다. 이에 대해서는 이하에서 도 6을 참조하여 보다 구체적으로 개시한다.The first weight w1 is multiplied by the first variable y1 corresponding to the first element in calculating the score. Thus, the first weight w1 is a factor that determines the influence of the first element on the score. This will be described more specifically with reference to Fig. 6 below.
도면에서 미리 정해진 값(1, -1, 0)은 예시된 값으로서 실시예에 따라 변경될 수 있다. 예를 들어 제 1 가중치(w1)가 0인 것은 점수를 산정하는데 제 1 요소를 고려하지 않는다는 것을 의미하고, 제 1 가중치(w1)가 음수인 것은 점수를 산정하는데 제 1 요소를 제 1 가중치에 대응하는 만큼 감점 요인으로 고려한다는 것을 의미하고, 제 1 가중치(w1)가 양수인 것은 점수를 산정하는데 있어서 제 1 요소를 가중치에 대응하는 만큼 가점 요인으로 고려한다는 것을 의미한다.The predetermined value (1, -1, 0) in the figure can be changed according to the embodiment as an example value. For example, if the first weight w1 is 0, it means that the first factor is not considered in calculating the score. If the first weight w1 is negative, the score is calculated. If the first factor is set to the first weight And the first weight w1 is a positive number, it means that the first factor is considered as a point factor corresponding to the weight in calculating the score.
제 2 선택부(1222-2) 및 제 3 선택부(1222-3)의 구성 및 동작은 제 1 선택부(1222-1)와 실질적으로 동일하므로 구체적인 설명을 생략한다.The configurations and operations of the second selection unit 1222-2 and the third selection unit 1222-3 are substantially the same as those of the first selection unit 1222-1, and a detailed description thereof will be omitted.
도 4는 도 3의 제어부(1221)의 동작을 예시한 순서도이다.FIG. 4 is a flowchart illustrating the operation of the
본 실시예에서 가중치 제어신호는 각 각중치(w1 ~ w3)의 값을 직접 지정하는 역할을 하며 상태 벡터에 우선하여 고려된다.In the present embodiment, the weight control signal plays a role of directly designating the values of the respective weight values w1 to w3, and is considered in preference to the state vector.
제어부(1221)는 제 1 선택 신호(cw1)를 선택하는 동작(S10 ~ S15), 제 2 선택 신호(cw2)를 선택하는 동작(S20 ~ S28), 제 3 선택 신호(cw3)를 결정하는 동작(S30 ~ S38)을 수행한다.The
먼저 가중치 제어신호에 의한 제 1 가중치(w1) 내지 제 3 가중치(w3)가 0으로 초기화된다(S1).The first weight w1 through the third weight w3 generated by the weight control signal are initialized to zero (S1).
먼저 제 1 선택 신호(cw1)를 결정하는 동작을 설명한다.First, an operation of determining the first selection signal cw1 will be described.
가중치 제어신호에 의한 제 1 가중치(w1)의 값이 0인지 판단한다(S10).It is determined whether the value of the first weight w1 by the weight control signal is 0 (S10).
가중치 제어신호에 의한 제 1 가중치(w1)의 값이 0이면 제 1 선택 신호(cw1)의 값을 11로 지정하고(S15) 그렇지 않으면 현재 제 1 가중치(w1)의 값이 0인지 판단한다.If the value of the first weight w1 by the weight control signal is 0, the value of the first selection signal cw1 is set to 11 (S15). Otherwise, it is determined whether the value of the first weight w1 is 0.
제 1 선택 신호(cw1)의 값이 11로 지정되면 제 1 선택부(1222-1)는 0을 선택하고 이는 제 1 레지스터(1223-1)에 저장된다.When the value of the first selection signal cw1 is set to 11, the first selector 1222-1 selects 0 and is stored in the first register 1223-1.
현재 제 1 가중치(w1)의 값이 0이면 제 1 선택 신호(cw1)의 값을 10으로 지정하고(S14) 그렇지 않으면 제 1 선택 신호(cw1)의 값을 00으로 지정한다(S12).If the value of the first weight w1 is 0, the value of the first selection signal cw1 is set to 10 (S14). Otherwise, the value of the first selection signal cw1 is set to 00 (S12).
제 1 선택 신호(cw1)의 값이 10으로 지정되면 제 1 선택부(1222-1)는 기존의 제 1 가중치(w1)를 선택하고 제 1 선택 신호(cw1)의 값이 00으로 지정되면 제 1 선택부(1222-1)는 1을 선택하여 제 1 레지스터(1223-1)에 저장된다.When the value of the first selection signal cw1 is set to 10, the first selector 1222-1 selects the existing first weight w1 and when the value of the first selection signal cw1 is 00, 1 selection unit 1222-1 selects 1 and is stored in the first register 1223-1.
제 1 선택 신호(cw1)의 값이 정해지면 단계(S10)로 돌아가 전술한 동작을 반복한다. 이러한 반복은 요청 큐(110)의 정보가 갱신되는 주기에 따라 수행될 수 있다.When the value of the first selection signal cw1 is determined, the operation returns to step S10 and the above-described operation is repeated. This repetition may be performed according to the period in which the information in the
다음으로 제 2 선택 신호(cw2)를 선택하는 동작을 설명한다.Next, the operation of selecting the second selection signal cw2 will be described.
가중치 제어신호에 의한 제 2 가중치(w2)의 값이 0인지 판단한다(S20).It is determined whether the value of the second weight w2 based on the weight control signal is 0 (S20).
가중치 제어신호에 의한 제 2 가중치(w2)의 값이 0이면 제 2 선택 신호(cw2)의 값을 11로 지정하고(S28) 그렇지 않으면 현재 메모리 장치에 대하여 수행하는 동작이 읽기 요청에 관한 것인지 판단한다(S21).If the value of the second weight w2 by the weight control signal is 0, the value of the second selection signal cw2 is set to 11 (S28). Otherwise, it is determined whether the operation to be performed on the current memory device is related to the read request (S21).
현재 메모리 장치에 대하여 수행하는 동작이 읽기 요청에 관한 것이면 읽기 큐의 길이(RQL)가 제 1 임계점(TH1)을 초과하는지 판단하고(S22) 그렇지 않으면 제 2 선택 신호(cw2)의 값을 10으로 지정한다(S25). If the operation to be performed on the current memory device is related to the read request, it is determined whether the length (RQL) of the read queue exceeds the first threshold TH1 (S22). Otherwise, the value of the second selection signal cw2 is set to 10 (S25).
읽기 큐의 길이(RQL)이 제 1 임계점(TH1)을 초과하면 최대 처리 시간(WM)이 제 2 임계점(TH2)을 초과하는지 판단하고(S23) 그렇지 않으면 제 2 선택 신호(cw2)의 값을 10으로 지정한다(S25).It is determined whether the maximum processing time WM exceeds the second threshold TH2 when the length RQL of the read queue exceeds the first threshold TH1 at step S23. Otherwise, the value of the second selection signal cw2 is set at 10 (S25).
최대 처리 시간(WM)이 제 2 임계점(TH2)을 초과하면 제 2 선택 신호(cw2)의 값을 00으로 지정하고(S27) 그렇지 않으면 최대 처리 시간(WM)이 제 3 임계점(TH3) 미만인지 판단한다(S24). When the maximum processing time WM exceeds the second threshold TH2, the value of the second selection signal cw2 is set to 00 (S27). Otherwise, if the maximum processing time WM is less than the third threshold TH3 (S24).
최대 처리 시간(WM)이 제 3 임계점(TH3) 미만이면 제 2 선택 신호(cw2)의 값을 01로 지정하고(S26) 그렇지 않으면 제 2 선택 신호의 값을 10으로 지정한다(S25).If the maximum processing time WM is less than the third threshold TH3, the value of the second selection signal cw2 is set to 01 (S26). Otherwise, the value of the second selection signal is set to 10 (S25).
제 2 선택 신호(cw2)의 값이 정해지면 단계(S20)로 돌아가 전술한 동작을 반복한다. 이러한 반복은 요청 큐(110)의 정보가 갱신되는 주기에 따라 수행될 수 있다.When the value of the second selection signal cw2 is determined, the process returns to step S20 and the above-described operation is repeated. This repetition may be performed according to the period in which the information in the
마지막으로 제 3 선택 신호(cw3)를 선택하는 동작을 설명한다.Finally, the operation of selecting the third selection signal cw3 will be described.
가중치 제어신호에 의한 제 3 가중치(w3)의 값이 0인지 판단한다(S30).It is determined whether the value of the third weight w3 by the weight control signal is 0 (S30).
가중치 제어신호에 의한 제 3 가중치(w3)의 값이 0이면 제 3 선택 신호(cw3)의 값을 11로 지정하고(S38) 그렇지 않으면 현재 메모리 장치에 대하여 수행하는 동작이 읽기 요청에 관한 것인지 판단한다(S31).If the value of the third weight w3 by the weight control signal is 0, the value of the third selection signal cw3 is set to 11 (S38). Otherwise, it is determined whether the operation to be performed on the current memory device is related to the read request (S31).
현재 메모리 장치에 대하여 수행하는 동작이 읽기 요청에 관한 것이면 읽기 큐의 길이(RQL)이 제 1 임계점(TH1)을 초과하는지 판단하고(S32) 그렇지 않으면 제 3 선택 신호(cw3)의 값을 10으로 지정한다(S35). If the operation to be performed on the current memory device is related to the read request, it is determined whether the length (RQL) of the read queue exceeds the first threshold TH1 (S32). Otherwise, the value of the third selection signal cw3 is set to 10 (S35).
읽기 큐의 길이(RQL)이 제 1 임계점(TH1)을 초과하면 최대 처리 시간(WM)이 제 2 임계점(TH2)을 초과하는지 판단하고(S33) 그렇지 않으면 제 3 선택 신호(cw3)의 값을 10으로 지정한다(S35).It is determined whether the maximum processing time WM exceeds the second threshold TH2 when the length RQL of the read queue exceeds the first threshold TH1 in step S33. Otherwise, the value of the third selection signal cw3 is set to 10 (S35).
최대 처리 시간(WM)이 제 2 임계점(TH2)을 초과하면 제 3 선택 신호(cw3)의 값을 01로 지정하고(S37) 그렇지 않으면 최대 처리 시간(WM)이 제 3 임계점(TH3) 미만인지 판단한다(S34). If the maximum processing time WM exceeds the second threshold TH2, the value of the third selection signal cw3 is set to 01 (S37). Otherwise, if the maximum processing time WM is less than the third threshold TH3 (S34).
최대 처리 시간(WM)이 제 3 임계점(TH3) 미만이면 제 3 선택 신호(cw3)의 값을 00으로 지정하고(S36) 그렇지 않으면 제 3 선택 신호의 값을 10으로 지정한다(S25).If the maximum processing time WM is less than the third threshold TH3, the value of the third selection signal cw3 is set to 00 (S36). Otherwise, the value of the third selection signal is set to 10 (S25).
제 3 선택 신호(cw3)의 값이 정해지면 단계(S30)로 돌아가 전술한 동작을 반복한다. 이러한 반복은 요청 큐(110)의 정보가 갱신되는 주기에 따라 수행될 수 있다.If the value of the third selection signal cw3 is determined, the process returns to step S30 and the above-described operation is repeated. This repetition may be performed according to the period in which the information in the
위에서 제 1 내지 제 3 임계점(TH1, TH2, TH3)은 통상의 기술자에 의해 선택될 수 있는 임의의 상수이다.The first to third thresholds TH1, TH2 and TH3 are arbitrary constants which can be selected by a conventional descriptor.
도 5는 도 1의 스케줄러(130)의 일 실시예를 나타내는 블록도이다.5 is a block diagram illustrating one embodiment of the
본 실시예에서 스케줄러(130)는 점수 연산부(131)와 요청 선택부(132)를 포함할 수 있다.In this embodiment, the
점수 연산부(131)는 요청 큐(110)에서 제공되는 정보로부터 산출되는 변수 값들과 가중치 생성부(120)에서 제공되는 가중치 벡터를 이용하여 점수 벡터를 생성한다.The
점수 벡터는 요청 큐(110)에 저장된 각 요청에 대응하는 점수들을 원소로 포함한다. 요청 선택부(132)는 점수 벡터에 포함된 점수들 중 예를 들어 최대 점수에 대응하는 요청을 선택하여 출력한다.The score vector includes the scores corresponding to each request stored in the
점수 연산부(131)는 각 요청에 대응하는 점수를 산출하기 위하여 변수 값들을 결정하고 변수 값들과 가중치 벡터의 원소들을 연산하여 점수를 산출한다.The
도 6은 도 5의 점수 연산부(131)를 나타내는 블록도이다.6 is a block diagram showing the
점수 연산부(131)는 요청 큐(110)의 정보를 이용하여 각 요청에 대응하여 변수를 결정하는 변수 결정부(1311)와 변수 결정부(1311)에서 출력된 변수 값들(y11, y12, y13, ...., yN1, yN2, yN3)과 가중치 벡터의 원소들(w1, w2, w3)을 이용하여 점수를 산출하는 연산부(1312-1 ~ 1312-N)를 포함한다. 이에 따라 제 1 내지 제 3 가중치(w1, w2, w3)의 값에 따라 점수가 달라질 수 있다.The
본 실시예에서는 스케줄링시 3개의 요소를 고려함으로써 각 요청에 대하여 결정되는 변수의 개수가 3개로 주어진다. 스케줄링시 고려할 요소가 증감되는 경우 이에 따라 변수의 개수 및 가중치의 개수가 증감될 수 있다.In the present embodiment, considering the three factors in scheduling, the number of variables determined for each request is given as three. The number of variables and the number of weights can be increased or decreased when elements to be considered in scheduling are increased or decreased.
변수 결정부(1311)에서 각 변수 값들을 결정하는 방법은 미리 결정될 수 있다.A method for determining the respective variable values in the variable determining
도 7은 도 6의 변수 결정부(1311)에서 각 변수 값들을 결정하는 방법의 일 예를 나타내는 도표이다.FIG. 7 is a table showing an example of a method for determining variable values in the variable determining
본 실시예에서 변수(y1)의 값은 0, 1 또는 변수(y1)의 이전 값 중 하나로 선택된다. 예를 들어 현재 쓰기 큐의 길이(WQL)가 하한선(LW) 미만이고 대응하는 요청의 종류가 읽기 요청이면 변수(y1) 값은 1로 정해지고 대응하는 요청의 종류가 쓰기 요청이면 변수(y1)의 값은 0으로 정해진다.In this embodiment, the value of the variable y1 is selected to be either 0, 1 or a previous value of the variable y1. For example, if the current write queue length (WQL) is less than the lower limit (LW) and the corresponding request type is a read request, the variable (y1) is set to 1. If the corresponding request type is a write request, Is set to zero.
또한 현재 쓰기 큐의 길이(WQL)가 상한선(HW) 이상이고 대응하는 요청의 종류가 읽기 요청이면 변수(y1) 값은 0으로 정해지고 대응하는 요청의 종류가 쓰기 요청이면 변수(y1)의 값은 1로 정해진다.If the current write queue length (WQL) is equal to or greater than the upper limit (HW) and the corresponding request type is a read request, the value of the variable (y1) is set to 0. If the type of the corresponding request is a write request, Is set to one.
또한 현재 쓰기 큐의 길이(WQL)가 하한선(LW) 이상 상한선(HW) 미만이면 변수(y1)의 값은 이전 값으로 정해진다.If the current write queue length (WQL) is less than the lower limit (LW) and the upper limit (HW), the value of the variable (y1) is set to the previous value.
위에서 상한선(HW)과 하한선(LW)은 통상의 기술자에 의해 임의로 선택될 수 있는 상수이다.The upper limit line HW and the lower limit line LW are constants that can be arbitrarily selected by a typical descriptor.
본 실시예에서 변수(y2)의 값은 0 또는 해당 요청이 대기한 사이클 수(WC) 중 하나로 선택된다.In this embodiment, the value of the variable y2 is selected to be either 0 or the number of cycles WC waiting for the request.
예를 들어 대응하는 요청을 처리하기 다음에 실행할 명령이 액티브 명령(ACT) 또는 칼럼 명령(COL)이면 변수(y2)의 값은 대기 사이클 수(WC)로 정해지고 프리차지 명령(PRE)이면 변수(y2)의 값은 0으로 정해진다.For example, if the instruction to be executed next after processing the corresponding request is an active instruction (ACT) or a column instruction (COL), the value of the variable y2 is determined by the number of wait cycles (WC) (y2) is set to zero.
본 실시예에서 변수(y3)의 값은 0, 1 또는 2로 선택된다.In this embodiment, the value of the variable y3 is selected to be 0, 1, or 2.
예를 들어 대응하는 요청을 처리하기 다음에 실행할 명령이 액티브 명령(ACT) 또는 프리차지 명령(COL)이면 변수(y3)의 값은 0으로 정해지고 다음에 실행할 명령이 칼럼 명령(COL)이면 변수(y3)의 값은 대응하는 요청이 읽기 요청인 경우 2 쓰기 요청인 경우 1로 정해진다.For example, if the command to be executed next after processing the corresponding request is the active command (ACT) or the precharge command (COL), the value of the variable y3 is set to 0. If the command to be executed next is the column command COL, The value of (y3) is set to 1 if the corresponding request is a read request or 2 if it is a write request.
변수 결정부(1311)는 위와 같은 동작을 수행하여 각 요청들에 대응하는 변수 값들을 결정한 후 이를 연산부(1312-1 ~ 1312-N)에 제공한다.The variable determining
이상에서 살펴본 바와 같이 각 요청들에 대한 점수는 변수 값들과 가중치를 연산하여 얻어지므로 가중치를 조절함으로써 각 요청의 점수가 달라져 실질적으로 스케줄링 규칙을 가변적으로 적용하는 효과가 있다.As described above, since the score for each request is obtained by calculating the variable values and the weights, the score of each request is changed by adjusting the weight, so that the scheduling rule is practically applied variably.
예를 들어 변수 값이 도 7과 같이 결정되는 경우 제 3 가중치(w3)의 값을 0으로 설정하면 스케줄러(120)는 FCFS(First Come First Served) 규칙으로 스케줄링 동작을 수행하고, 제 2 가중치(w2)의 값을 0으로 설정하면 스케줄러(120)는 FR-FCFS(First Ready - First Come First Served) 규칙으로 스케줄링 동작을 수행하게 된다.For example, when the value of the variable is determined as shown in FIG. 7, if the value of the third weight w3 is set to 0, the
이와 같이 본 발명은 스케줄링 규칙의 자유로운 변경을 통해 시스템의 성능을 최적화하는데 있어서 기본이 되는 기술적 사상을 제공한다.As described above, the present invention provides a technical idea that is fundamental in optimizing the performance of the system through free modification of the scheduling rules.
이상에서 도면을 참조하여 본 발명의 실시예를 개시하였다. 이상의 개시는 설명을 위한 것으로서 본 발명의 권리범위를 한정하는 것은 아니며, 본 발명의 권리범위는 이하의 특허청구범위에 문언적으로 기재된 범위와 그 균등범위에 의해 정해진다. The embodiments of the present invention have been described with reference to the drawings. The scope of the present invention is not limited to the scope of the present invention, and the scope of the present invention is defined by the scope of the following claims and their equivalents.
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: 메모리 장치10: Host
100: Memory controller
110: Request queue
120: weight generation unit
121:
122: weight determining unit
1221:
1222-1: first selection unit
1222-2: second selection unit
1222-3: third selection unit
1223-1: first register
1223-2: second register
1223-3: Third register
130: scheduler
131: score computing unit
1311: variable determining unit
1312-1 to 1312-N:
132: request selector
140:
20: Memory device
Claims (11)
상기 요청 큐에 포함된 각 요청에 대하여 점수를 계산하고 상기 점수에 따라 상기 요청의 처리 순서를 결정하는 스케줄러; 및
상기 점수를 계산하는데 입력되는 다수의 변수 각각에 대한 가중치를 원소로 하는 가중치 벡터를 생성하는 가중치 생성부
를 포함하는 메모리 컨트롤러.A request queue storing a provided request from the host;
A scheduler for calculating a score for each request included in the request queue and determining a processing order of the request according to the score; And
And a weight generating unit for generating a weight vector having an element as a weight for each of a plurality of variables input to calculate the score,
.
상기 메모리 컨트롤러의 동작 상태로부터 도출되는 인자를 원소로 포함하는 상태 벡터를 생성하는 상태 관찰부; 및
상기 상태 벡터 또는 가중치 제어신호에 따라 상기 가중치 벡터를 결정하는 가중치 결정부
를 포함하는 메모리 컨트롤러.The apparatus of claim 1, wherein the weight generation unit
A state observing unit for generating a state vector including an element derived from an operating state of the memory controller as an element; And
A weight determining unit for determining the weight vector according to the state vector or the weight control signal,
.
상기 상태 벡터, 상기 가중치 제어신호 또는 상기 가중치 벡터의 현재 값에 따라 다수의 선택 신호를 생성하는 제어부; 및
상기 다수의 선택 신호에 따라 하나 또는 둘 이상의 상수 또는 상기 가중치 벡터의 현재 값을 포함하는 값들로부터 상기 가중치 벡터의 다음 값을 결정하는 선택부
를 포함하는 메모리 컨트롤러.The apparatus of claim 2, wherein the weight determining unit
A controller for generating a plurality of selection signals according to the current value of the state vector, the weight control signal, or the weight vector; And
A selector for selecting a next value of the weight vector from values including one or more constants or a current value of the weight vector according to the plurality of selection signals,
.
상기 요청 큐에 저장된 각 요청에 대하여 상기 요청 큐의 상태 또는 상기 각 요청의 상태에 따라 결정되는 상기 다수의 변수와 상기 가중치 벡터를 연산하여 상기 점수를 연산하는 점수 연산부; 및
상기 점수에 따라 상기 요청 큐에 저장된 요청 중 어느 하나를 선택하는 요청 선택부
를 포함하는 메모리 컨트롤러.The system according to claim 1, wherein the scheduler
A point calculator for calculating the score by calculating the plurality of variables and the weight vector determined according to the state of the request queue or the state of each request for each request stored in the request queue; And
A request selection unit for selecting any one of the requests stored in the request queue according to the score,
.
상기 변수 결정부에서 출력된 상기 다수의 변수와 상기 가중치 벡터를 연산하여 상기 점수를 출력하는 연산부
를 포함하는 메모리 컨트롤러.The apparatus of claim 7, wherein the score computing unit comprises: a variable determining unit for determining the plurality of variables corresponding to each request according to the status of the request queue or the status of each request;
And a computing unit for computing the plurality of variables output from the variable determining unit and the weight vector,
.
9. The memory controller of claim 8, wherein the status of each request includes a number of wait cycles of each request, a type of each request, or a type of command to provide to a memory device for execution of each request.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150018016A KR101993028B1 (en) | 2015-02-05 | 2015-02-05 | Memory controller |
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 (en) | 2015-02-05 | 2015-02-05 | Memory controller |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160096762A true KR20160096762A (en) | 2016-08-17 |
KR101993028B1 KR101993028B1 (en) | 2019-06-26 |
Family
ID=56566838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150018016A KR101993028B1 (en) | 2015-02-05 | 2015-02-05 | Memory controller |
Country Status (2)
Country | Link |
---|---|
US (1) | US9792065B2 (en) |
KR (1) | KR101993028B1 (en) |
Families Citing this family (6)
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 (en) * | 2017-10-27 | 2019-05-08 | 에스케이하이닉스 주식회사 | Semiconductor Memory System With Resistive Variable Memory Device and Method of Driving the Same |
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 (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR960035259A (en) * | 1995-03-31 | 1996-10-24 | 리 페치 | A computer processor comprising a register file having a reduced read and / or write port bandwidth |
JP2000295247A (en) * | 1999-04-09 | 2000-10-20 | Nec Corp | Scheduling method in queuing system and chuting blanks switch |
JP2002358259A (en) * | 2001-05-31 | 2002-12-13 | Toshiba Corp | File server having priority control function, and file access method and file access program in the server |
US20100278190A1 (en) * | 2009-04-29 | 2010-11-04 | Yip Thomas C | Hierarchical pipelined distributed scheduling traffic manager |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5881264A (en) | 1996-01-31 | 1999-03-09 | Kabushiki Kaisha Toshiba | Memory controller and memory control system |
US6324624B1 (en) * | 1999-12-28 | 2001-11-27 | Intel Corporation | Read lock miss control and queue management |
US6499090B1 (en) | 1999-12-28 | 2002-12-24 | Intel Corporation | Prioritized bus request scheduling mechanism for processing devices |
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 |
-
2015
- 2015-02-05 KR KR1020150018016A patent/KR101993028B1/en active IP Right Grant
- 2015-10-16 US US14/885,902 patent/US9792065B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR960035259A (en) * | 1995-03-31 | 1996-10-24 | 리 페치 | A computer processor comprising a register file having a reduced read and / or write port bandwidth |
JP2000295247A (en) * | 1999-04-09 | 2000-10-20 | Nec Corp | Scheduling method in queuing system and chuting blanks switch |
JP2002358259A (en) * | 2001-05-31 | 2002-12-13 | Toshiba Corp | File server having priority control function, and file access method and file access program in the server |
US20100278190A1 (en) * | 2009-04-29 | 2010-11-04 | Yip Thomas C | Hierarchical pipelined distributed scheduling traffic manager |
Also Published As
Publication number | Publication date |
---|---|
KR101993028B1 (en) | 2019-06-26 |
US20160231961A1 (en) | 2016-08-11 |
US9792065B2 (en) | 2017-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101993028B1 (en) | Memory controller | |
US10653960B2 (en) | Method for controlling interaction with virtual target, terminal, and storage medium | |
US8482571B2 (en) | Information processing processing apparatus, method for controlling information processing apparatus, and program | |
CN112305907B (en) | Self-adaptive PID temperature control method, device and equipment | |
KR20130019674A (en) | Terminal and method for performing application thereof | |
US11275744B2 (en) | Disaggregating latent causes for computer system optimization | |
US10275371B2 (en) | Method and apparatus for controlling memory operation | |
US11544064B2 (en) | Processor for executing a loop acceleration instruction to start and end a loop | |
JP2008503829A (en) | Image resource loading method and image resource loading system | |
KR20220027964A (en) | Real-time GPU rendering with performance-guaranteed power management | |
CN109923498A (en) | Application for electrical performance management dissects | |
KR20220059194A (en) | Method and apparatus of object tracking adaptive to target object | |
KR20210064239A (en) | Techniques for Inducing High Input Latency in Multiplayer Programs | |
KR20210021260A (en) | Methods and apparatus to dynamically throttle compute engines | |
US10922612B2 (en) | Information processing apparatus and information processing method | |
CN114310879A (en) | Robot control method, control cabinet and system | |
JPWO2021229626A5 (en) | ||
US9430421B2 (en) | Interrupt signal arbitration | |
JP2012242969A (en) | Data processor, data processor control method and program | |
JP2018521421A (en) | Vector operand bit size control | |
KR102359404B1 (en) | Memory controller and operating method thereof | |
JP7175124B2 (en) | Information processing device, position prediction method and position prediction program | |
JP2014002642A (en) | Storage system, input/output control device, input/output control method and computer program | |
Zhao et al. | HeteGen: Heterogeneous Parallel Inference for Large Language Models on Resource-Constrained Devices | |
JPWO2021176514A5 (en) |
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 |