KR20170100414A - Memory controller and request scheduling method using the same - Google Patents
Memory controller and request scheduling method using the same Download PDFInfo
- Publication number
- KR20170100414A KR20170100414A KR1020170003473A KR20170003473A KR20170100414A KR 20170100414 A KR20170100414 A KR 20170100414A KR 1020170003473 A KR1020170003473 A KR 1020170003473A KR 20170003473 A KR20170003473 A KR 20170003473A KR 20170100414 A KR20170100414 A KR 20170100414A
- Authority
- KR
- South Korea
- Prior art keywords
- request
- host
- token
- tokens
- requests
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 81
- 238000012544 monitoring process Methods 0.000 claims description 18
- 230000003247 decreasing effect Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 235000003642 hunger Nutrition 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000037351 starvation Effects 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 101000711846 Homo sapiens Transcription factor SOX-9 Proteins 0.000 description 1
- 101100232371 Hordeum vulgare IAT3 gene Proteins 0.000 description 1
- 102100034204 Transcription factor SOX-9 Human genes 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- 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
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
본 특허문헌은 메모리 콘트롤러 및 메모리 콘트롤러의 요청 스케줄링 방법에 관한 것이다.This patent document relates to a request scheduling method of a memory controller and a memory controller.
메모리 콘트롤러는 호스트 장치로부터 제공되는 다수의 요청의 처리 순서를 결정하여 메모리 장치로 출력할 수 있다. 종래의 메모리 콘트롤러는 다수의 요청의 처리 순서를 결정하기 위하여 FCFS(First Come First Served), FR-FCFS(First Ready Frist Come First Served) 등의 규칙에 따른 스케줄링 방법을 사용하였다. 이와 같이 종래의 메모리 콘트롤러는 고정된 기준에 의해서 스케줄링을 수행할 수 있을 뿐 호스트 장치의 성격에 맞게 최적화된 스케줄링을 제공하지 못하는 문제점이 있다.The memory controller can determine the processing order of a plurality of requests provided from the host device and output the determined order to the memory device. Conventional memory controllers use a scheduling method according to rules such as FCFS (First Come First Served) and FR-FCFS (First Ready Frist Come First Served) in order to determine a processing order of a plurality of requests. Thus, the conventional memory controller can perform scheduling based on a fixed reference, but can not provide optimized scheduling according to the characteristics of the host apparatus.
본 발명의 일 실시예는 각 호스트 장치에 할당된 서로 다른 두 종류의 토큰을 이용해 저장된 요청들의 출력 순서를 결정함으로써 다수의 호스트 장치의 요청들의 출력 순서를 최적화할 수 있는 메모리 콘트롤러 및 메모리 콘트롤러의 요청 스케줄링 방법을 제공할 수 있다.The present invention provides a memory controller that can optimize the output order of requests of a plurality of host devices by determining the output order of stored requests using two different types of tokens allocated to each host device, A scheduling method can be provided.
본 발명의 일 실시예에 따른 메모리 콘트롤러는 다수의 호스트 장치 중 대응하는 호스트 장치로부터 전송된 요청을 저장하는 다수의 요청 큐; 상기 다수의 호스트 장치에 각각 대응하는 제1 및 제2토큰의 개수에 관한 정보를 생성하는 토큰 정보 생성부; 및 상기 다수의 요청 큐를 반복하여 차례로 선택하고, 상기 선택된 요청 큐에 저장된 요청들을 상기 제1 및 제2토큰을 사용하여 출력하되, 상기 제1토큰 한 개당 하나의 요청을 출력하고, 상기 제1토큰이 모두 소모되면 상기 제2토큰 한 개당 하나의 요청을 출력하는 요청 스케줄러를 포함할 수 있다.A memory controller according to an embodiment of the present invention includes a plurality of request queues for storing requests transmitted from corresponding host devices among a plurality of host devices; A token information generator for generating information on the number of first and second tokens corresponding to the plurality of host devices, respectively; And outputting one request per one of the first tokens, and outputting a request for one of the plurality of request queues, And a request scheduler outputting one request per one of the second tokens if the tokens are exhausted.
다수의 호스트 장치에서 전송된 요청을 메모리 장치로 출력하는 메모리 콘트롤러의 요청 스케줄링 방법에 있어서, 본 발명의 일 실시예에 따른 메모리 콘트롤러의 요청 스케줄링 방법은 상기 다수의 호스트 장치 각각에 하나 이상의 제1 및 제2토큰을 할당하는 단계; 상기 다수의 호스트 장치로부터 전송된 요청을 상기 다수의 호스트 장치에 각각 대응하는 요청 큐에 저장하는 단계; 상기 다수의 요청 큐 중 하나의 요청 큐를 선택하는 단계; 상기 제1토큰 한 개당 상기 선택된 요청 큐에 저장된 요청을 하나씩 출력하는 단계; 및 상기 제1토큰이 모두 소모되면, 상기 제2토큰 한 개당 상기 선택된 요청 큐에 저장된 요청을 하나씩 출력하는 단계를 포함할 수 있다.A method of requesting a memory controller to output a request transmitted from a plurality of host devices to a memory device, the method comprising the steps of: Assigning a second token; Storing a request transmitted from the plurality of host devices in a request queue corresponding to each of the plurality of host devices; Selecting a request queue of one of the plurality of request queues; Outputting the requests stored in the selected request queue for each of the first tokens one by one; And outputting, if the first token is consumed, the requests stored in the selected request queue per one of the second tokens, one by one.
본 기술은 각 호스트 장치의 특성에 따라 서로 다른 두 종류의 토큰을 할당하고, 이를 이용해 각 호스트 장치에서 전송된 요청들의 출력 순서를 결정함으로써 각 호스트 장치의 특성에 알맞은 최정화된 요청 스케줄링을 할 수 있다.This technique allocates two different types of tokens according to the characteristics of each host device and determines the output order of requests transmitted from each host device using the tokens, thereby enabling a maximized request scheduling suitable for each host device .
도 1은 시스템(100)의 구성도,
도 2는 상술한 규칙들 중 둘 이상의 규칙을 고려하여 요청을 스케줄링하는 방법의 일 예를 설명하기 위한 도면,
도 3은 도 2에서 설명한 스케줄링 방법의 문제점을 설명하기 위한 도면,
도 4는 본 발명의 일 실시예에 따른 시스템에서 메모리 콘트롤러(400) 및 주변 구성을 나타낸 도면,
도 5는 도 4의 메모리 콘트롤러(400)의 동작을 설명하기 위한 도면,
도 6은 본 발명의 일 실시예에 따른 시스템에서 메모리 콘트롤러(600) 및 주변 구성을 나타낸 도면,
도 7은 도 6의 메모리 콘트롤러(600)의 동작을 설명하기 위한 도면,
도 8은 본 발명의 일 실시예에 따른 시스템에서 메모리 콘트롤러(700) 및 주변 구성을 나타낸 도면,
도 9는 본 발명의 일 실시예에 따른 메모리 콘트롤러의 스케줄링 방법을 설명하기 위한 순서도,
도 10은 본 발명의 일 실시예에 따른 메모리 콘트롤러의 스케줄링 방법을 설명하기 위한 순서도,
도 11은 본 발명의 일 실시예에 따른 메모리 콘트롤러의 스케줄링 방법을 설명하기 위한 순서도,
도 12는 본 발명의 일 실시예에 따른 메모리 콘트롤러의 스케줄링 방법을 설명하기 위한 순서도.1 is a block diagram of a
FIG. 2 is a view for explaining an example of a method of scheduling a request considering two or more of the above-mentioned rules; FIG.
FIG. 3 is a diagram for explaining a problem of the scheduling method illustrated in FIG. 2,
Figure 4 illustrates a
5 is a diagram for explaining the operation of the
Figure 6 illustrates a
FIG. 7 is a diagram for explaining the operation of the
8 illustrates a memory controller 700 and peripheral configuration in a system according to an embodiment of the present invention,
FIG. 9 is a flowchart illustrating a method of scheduling a memory controller according to an embodiment of the present invention. FIG.
FIG. 10 is a flowchart illustrating a method of scheduling a memory controller according to an embodiment of the present invention. FIG.
11 is a flowchart illustrating a method of scheduling a memory controller according to an embodiment of the present invention.
12 is a flowchart illustrating a method of scheduling a memory controller according to an embodiment of the present invention.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings in order to facilitate a person skilled in the art to easily carry out the technical idea of the present invention.
도 1은 시스템(100)의 구성도이다.1 is a block diagram of the
도 1을 참조하면, 시스템은 다수의 호스트 장치(110_0 - 110_n, n은 자연수), 메모리 콘트롤러(120) 및 메모리 장치(130)를 포함할 수 있다.Referring to FIG. 1, the system may include a plurality of host devices 110_0 through 110_n, where n is a natural number, a
다수의 호스트 장치(110_0 - 110_n)는 중앙처리장치(CPU), 그래픽 처리 장치(Graphic Processing Unit, GPU) 또는 디스플레이 장치(Display) 등과 같은 장치이며, 필요에 따라 메모리 콘트롤러(120)에 요청을 할 수 있다.The plurality of host devices 110_0-110_n are devices such as a central processing unit (CPU), a graphic processing unit (GPU) or a display device and may make requests to the
메모리 콘트롤러(120)는 호스트 장치들(110_0 - 110_n)로부터 전송된 요청을 스케줄링하여 메모리 장치(130) 제어하고, 메모리 장치(130)와 다수의 호스트 장치(110_0 - 110_n)들 간에 데이터를 전달할 수 있다. 메모리 콘트롤러(120)는 버스 인터페이스(121), 다수의 요청 큐(122_0 - 122_n) 및 요청 스케줄러(123)를 포함할 수 있다.The
버스 인터페이스(121)는 호스트 장치들(110_0 - 110_n)로부터 전송된 요청을 대응하는 요청 큐(122_0 - 122_n)들로 전달하고, 다수의 호스트 장치들(110_0 - 110_n)과 메모리 장치(130) 사이에 데이터를 전달할 수 있다.The
다수의 요청 큐(122_0 - 122_n)는 각각 다수의 호스트 장치들(110_0 - 110_n) 중 하나의 호스트 장치에 대응하며, 버스 인터페이스(121)를 통해 대응하는 호스트 장치로부터 전송된 요청을 입력된 순서대로 저장할 수 있다.Each of the plurality of request queues 122_0 to 122_n corresponds to a host device of one of the plurality of host devices 110_0 to 110_n and transmits requests transmitted from the corresponding host device through the
요청 스케줄러(123)는 다수의 요청 큐(122_0 - 122_n)에 저장된 요청들을 설정된 규칙에 따라 스케줄링하고, 요청들을 스케줄링된 순서대로 메모리 장치(130)로 출력할 수 있다.The
메모리 장치(130)는 메모리 콘트롤러(120)로부터 전송된 요청에 따라 버스 인터페이스(121)를 통해 전달된 데이터를 저장하거나, 저장된 데이터를 출력할 수 있다. 메모리 장치(130)는 데이터를 저장하기 위한 다수의 메모리 뱅크(BK0 - BKm, m은 자연수)를 포함할 수 있다. 다수의 메모리 뱅크(BK0 - BKm) 각각은 다수의 워드라인(WL), 비트라인(BL) 및 메모리 셀(MC)을 포함할 수 있다. 도 1에서는 도시의 편의를 위해 메모리 뱅크(BK0)의 내부에만 일부 구성을 도시하였다.The
호스트 장치는 그 종류에 따라 각각 요구하는 QoS(Quality of Service)의 성격이 다르기 때문에 메모리 콘트롤러(120)는 호스트 장치들의 성격을 고려하여 호스트 장치들로부터 전송된 요청들을 최적화된 순서로 메모리 장치(130)로 전송해주어야 할 수 있다. 예를 들어, 중앙처리장치의 경우 낮은 대기시간을 요구하며, 디스플레이 장치의 경우 높은 대역폭, 중간 정도의 대기시간을 요구하고, 그래픽 처리 장치의 경우 높은 대역폭을 요구할 수 있다. 이러한 경우 각각 다른 호스트 장치들로부터 전송된 요청들을 요청된 순서대로 메모리 장치(130)로 전송한다면 요청에 대응하는 작업이 효율적으로 수행되지 않을 수 있다.Since the quality of the QoS (Quality of Service) required by the host device is different depending on the type of the host device, the
이와 같이, 서로 다른 호스트 장치로부터 전송된 요청들을 처리하기 위한 방법으로 (1) timeout 규칙을 이용하는 방법, (2) priority 규칙을 이용하는 방법, 또는 (3) bandwidth calibration 규칙을 이용하는 방법 등이 있다.As described above, there are (1) a method using a timeout rule, (2) a method using a priority rule, or (3) a method using a bandwidth calibration rule.
먼저 (1) timeout 규칙을 이용하는 방법은 호스트 장치 별로 각각 다른 임계 시간을 부여하고, 요청 큐에 저장된 요청들 중 수신된지 임계 시간 이상이 지난 요청들을 출력하는 방법일 수 있다. 예를 들어, 호스트 장치A에 5클록이라는 임계시간이 할당되고, 호스트 장치B에 10클록이라는 임계시간이 할당된 경우 호스트 장치A로부터 전송된 요청은 메모리 콘트롤러로 수신된지 5클록 이상이되면 출력하고, 호스트 장치B로부터 전송된 요청은 메모리 콘트롤러로 수신된지 10클록 이상이되면 출력할 수 있다.(1) The method of using the timeout rule may be a method of assigning different threshold time to each host device and outputting requests that are received among the requests stored in the request queue or exceeding the threshold time. For example, when a threshold time of 5 clocks is allocated to the host apparatus A and a threshold time of 10 clocks is allocated to the host apparatus B, the request sent from the host apparatus A is output when the memory controller receives 5 clocks or more, The request transmitted from the host apparatus B can be output when it is received by the memory controller for 10 clocks or more.
(2) priority 규칙을 이용하는 방법은 요청에 부여된 우선권을 고려하여 우선권이 높은 요청부터 출력하는 방법으로 요청에 부여되는 우선권은 호스트 장치별로 고정적으로 설정되어 있거나, 또는 요청별로 다르게 부여될 수 있다. 예를 들어, 호스트 장치A에 호스트 장치B보다 높은 우선권이 부여된 경우 호스트 장치A와 호스트 장치B의 요청이 동시에 수신되면 호스트 장치A로부터 전송된 요청부터 출력할 수 있다.(2) The method using the priority rule is a method of outputting a request having a high priority in consideration of a priority given to a request. The priority given to the request may be fixedly set for each host device, or may be differently assigned to each request. For example, when a higher priority is given to the host apparatus A than to the host apparatus B, a request from the host apparatus A and the host apparatus B can be simultaneously output.
(3) bandwidth calibration 규칙을 이용하는 방법은 호스트 장치별로 할당되어야 하는 대역폭(이하 목표 대역폭이라 함)을 설정하고, 호스트 장치별로 실제 이용되는 대역폭을 모니터링하여 그 결과 실제 이용되는 대역폭(이하 실제 대역폭이라 함)이 목표 대역폭보다 크면 해당 호스트 장치에 대한 우선권을 낮추고, 실제 대역폭이 목표 대역폭보다 작으면 해당 호스트 장치에 대한 우선권을 높이는 방법일 수 있다. 예를 들어, 설정된 구간 동안 호스트 장치A가 사용하는 대역폭과 호스트 장치B가 사용하는 대역폭을 모니터링하여 각 호스트 장치의 목표 대역폭과 비교한 후 호스트 장치A의 대역폭이 목표 대역폭보다 큰 경우 호스트 장치A의 우선권을 낮추고, 호스트 장치B의 대역폭이 목표 대역폭보다 작은 경우 호스트 장치B의 우선권을 높일 수 있다. (3) The method of using the bandwidth calibration rule sets the bandwidth to be allocated for each host device (hereinafter referred to as the target bandwidth), monitors the bandwidth actually used for each host device, and as a result, ) Is greater than the target bandwidth, the priority for the host device may be lowered, and if the actual bandwidth is smaller than the target bandwidth, the priority for the host device may be increased. For example, if the bandwidth used by the host apparatus A and the bandwidth used by the host apparatus B are monitored during the set interval and compared with the target bandwidth of each host apparatus, if the bandwidth of the host apparatus A is larger than the target bandwidth, The priority of the host apparatus B can be lowered and the priority of the host apparatus B can be increased if the bandwidth of the host apparatus B is smaller than the target bandwidth.
(4) FCFS(first come-first serve) 규칙을 이용하는 방법은 먼저 수신된 요청을 먼저 출력하는 방법일 수 있다. (4) The method using the FCFS (first come-first serve) rule may be a method of outputting the received request first.
(5) FR-FCFS(first-ready, first come-first serve) 규칙을 이용하는 방법은 먼저 수신된 요청을 먼저 출력하되, 현재 오픈된(액티브된) 로우(워드라인)가 있는 경우 이러한 로우에 대한 요청을 먼저 출력하는 방법일 수 있다.(5) The method of using the first-ready (FR-FCFS) rule is to first output the received request, if there is a currently open (active) row (word line) It may be a method of outputting the request first.
(6) FR(first-ready) 규칙을 이용하는 방법은 현재 오픈된(또는 액티브된) 로우(또는 워드라인)가 있는 경우 이러한 로우에 대한 요청을 먼저 출력하는 방법일 수 있다.(6) The method of using a first-ready (FR) rule may be a method of first outputting a request for such a row if there is a currently open (or active) row (or word line).
이때 실제 요청들을 스케줄링할 때에는 위와 같은 규칙들 중 하나의 규칙만을 고려하여 스케줄링을 할수도 있지만 둘 이상의 규칙을 조합하여 고려함으로써 스케줄링을 할수도 있다.At this time, when scheduling actual requests, scheduling may be performed considering only one of the above rules, but scheduling may be performed by considering two or more rules in combination.
도 2는 상술한 규칙들 중 둘 이상의 규칙을 고려하여 요청을 스케줄링하는 방법의 일 예를 설명하기 위한 도면이다. FIG. 2 is a view for explaining an example of a method of scheduling a request considering two or more of the above-mentioned rules.
도 2를 참조하면, 각 요청들(CMD0 - CMD3)에는 'TIMEOUT', 'PRIORITY', 'ROWHIT', 'STARVATION'이라는 4가지 항목에 따라 출력 순서가 결정될 수 있다.Referring to FIG. 2, the output order can be determined according to four items 'TIMEOUT', 'PRIORITY', 'ROWHIT', and 'STARVATION' in each of the requests CMD0 to CMD3.
'TIMEOUT'은 각 요청이 수신된 시점으로부터 지난 시간(이하 경과 시간이라 함)이 각 요청에 할당된 임계 시간 이상인지 여부를 나타내며, 'T'는 경과 시간이 임계 시간 이상임을 나타내고, 'F'는 경과 시간이 임계 시간 미만임을 나타낼 수 있다. 이때 'TIMEOUT'이 'T'인 요청이 'F'인 요청보다 빨리 출력될 수 있다.'TIMEOUT' indicates whether the elapsed time from the receipt of each request is greater than or equal to the threshold time allocated to each request, 'T' indicates that the elapsed time is greater than or equal to the threshold time, 'F' May indicate that the elapsed time is less than the threshold time. At this time, the request whose 'TIMEOUT' is 'T' can be outputted earlier than the request whose 'T' is 'F'.
'PRIORITY'는 각 요청에 할당된 우선권 점수를 나타내며, 우선순위가 높은 요청일수록 높은 우선권 점수가 부여될 수 있다. 이때 우선권 점수가 높은 요청이 낮은 요청보다 빨리 출력될 수 있다.'PRIORITY' indicates the priority score assigned to each request, and a higher priority request can be given a higher priority score. At this time, requests with higher priority scores can be output faster than lower ones.
'ROWHIT'은 요청에 대응하는 로우가 현재 오픈된 상태인지 여부를 나타내며, 'T'는 요청에 대응하는 로우가 현재 오픈된 상태임을 나타내고, 'F'는 요청에 대응하는 로우가 현재 오픈된 상태임을 나타낼 수 있다. 이때 'ROWHIT'이 'T'인 요청이 'F'인 요청보다 빨리 출력될 수 있다.'ROWHIT' indicates whether the row corresponding to the request is currently open, 'T' indicates that the row corresponding to the request is currently open, and 'F' indicates that the row corresponding to the request is currently open . At this time, the request whose 'ROWHIT' is 'T' can be output earlier than the request whose 'R' is 'F'.
'STARVATION'은 수신된 요청이 출력되지 못하고 지연된 시간을 나타내며, 지연시간이 긴 요청이 지연시간이 짧은 요청보다 빨리 출력될 수 있다.'STARVATION' indicates the delay time in which the received request can not be output, and the long delay request can be output faster than the short delay request.
각 항목에는 설계에 따라 서로 다른 가중치가 부여될 수 있으며, 도 2의 경우에는 'TIMEOUT', 'PRIORITY', 'ROWHIT', 'STARVATION'의 순서로 가중치가 부여된 경우에 대해 도시하였다. 따라서 스케줄링 시에는 'TIMEOUT'가 가장 중요하게 고려되며, 다음으로 'PRIORITY'가 고려되고, 다음으로 'ROWHIT'가 고려되고, 마지막으로 'STARVATION'이 고려될 수 있다.In FIG. 2, weights are given in order of 'TIMEOUT', 'PRIORITY', 'ROWHIT', and 'STARVATION'. Therefore, 'TIMEOUT' is considered the most important in scheduling, 'PRIORITY' is considered next, 'ROWHIT' is considered next, and 'STARVATION' is considered last.
예를 들어, 2개의 요청의 'TIMEOUT'가 다른 경우 나머지 3항목에 관계없이 'TIMEOUT'인 'T' 요청이 'F'인 요청보다 먼저 출력될 수 있다. 다음으로 2개의 요청의 'TIMEOUT'가 동일(모두 'T' 또는 모두 'F')하고, 'PRIORITY'가 다른 경우 나머지 2항목에 관계없이 'PRIORITY'가 높은 요청이 낮은 요청보다 먼저 출력될 수 있다. 다음으로 2개의 요청의 'TIMEOUT' 및 'PRIORITY'가 동일하고 'ROWHIT'이 다른 경우 나머지 1항목에 관계없이 'ROWHIT'이 'T' 요청이 'F'인 요청보다 먼저 출력될 수 있다. 마지막으로 'TIMEOUT', 'PRIORITY' 및 'ROWHIT'이 동일하고, 'STARVATION'이 다른 경우 'STARVATION'이 높은 요청이 낮은 요청보다 먼저 출력될 수 있다.For example, if the 'TIMEOUT' of the two requests is different, the 'T' request with 'TIMEOUT' may be output before the request with 'F', regardless of the other three. Next, if the 'TIMEOUT' of the two requests are the same (all 'T' or all 'F') and the 'PRIORITY' is different, the request with higher PRIORITY may be output before the lower request, have. Next, if 'TIMEOUT' and 'PRIORITY' of two requests are the same, and 'ROWHIT' is different, 'ROWHIT' may be output before the 'T' request is 'F', regardless of the remaining one item. Finally, if 'TIMEOUT', 'PRIORITY' and 'ROWHIT' are the same, and 'STARVATION' is different, a request with a higher 'STARVATION' may be output before a lower request.
이를 고려하여 도 2에 도시된 요청들(CMD0 - CMD3)을 스케줄링하면, CMD0 - CMD1 - CMD2 - CMD3의 순서가 될 수 있다. 이때 다수의 항목들 중 우선적으로 고려되는 항목(즉, 우선적으로 고려되는 규칙)은 설계에 따라 달라질 수 있다.Taking this into consideration, when the requests CMD0 to CMD3 shown in FIG. 2 are scheduled, the order of CMD0 to CMD1 to CMD2 to CMD3 can be obtained. At this time, the item to be considered as a priority among the plurality of items (that is, the rule to be considered as priority) may be different depending on the design.
도 3은 도 2에서 설명한 스케줄링 방법의 문제점을 설명하기 위한 도면이다.FIG. 3 is a diagram for explaining a problem of the scheduling method illustrated in FIG.
도 3을 참조하면, 요청 스케줄러(123)는 요청 큐(122_0 - 122_n)에 저장된 요청들(CMD0 - CMD3)의 'TIMEOUT', 'PRIORITY', 'ROWHIT', 'STARVATION'을 각각 비교(COMPARE)하여 최종적으로 출력할 요청(OUT_CMD)을 선택할 수 있다.Referring to FIG. 3, the
도 3에 도시된 바와 같이, 'TIMEOUT', 'PRIORITY', 'ROWHIT', 'STARVATION' 항목을 모두 고려하여 스케줄링을 하는 방법은 모든 요청들(CMD0 - CMD3)을 한 번에 고려할 수 있다는 장점이 있지만 요청들(CMD0 - CMD3)의 개수가 많아질수록 비교횟수도 많아져서 동작이 느려지고 또 이러한 비교를 위해 필요한 회로의 면적이 커진다는 문제점이 있다.As shown in FIG. 3, the scheduling method considering all the items 'TIMEOUT', 'PRIORITY', 'ROWHIT' and 'STARVATION' has an advantage that all requests (CMD0 to CMD3) However, as the number of requests (CMD0 - CMD3) increases, the number of comparisons increases, which slows down the operation and increases the circuit area required for such comparison.
도 4는 본 발명의 일 실시예에 따른 시스템에서 메모리 콘트롤러(400) 및 주변 구성을 나타낸 도면이다. 4 is a diagram illustrating a
도 4를 참조하면, 시스템은 다수의 호스트 장치(HOST_0 - HOST_n), 메모리 콘트롤러(400) 및 메모리 장치(MEMORY)를 포함할 수 있다. 메모리 콘트롤러(400)는 다수의 요청 큐(410_0 - 410_n), 토큰 정보 생성부(420), 요청 스케줄러(430) 및 버스 인터페이스(440)를 포함할 수 있다.4, the system may include a plurality of host devices (HOST_0 to HOST_n), a
다수의 호스트 장치(HOST_0 - HOST_n)는 중앙처리장치(CPU), 그래픽 처리 장치(Graphic Processing Unit, GPU), 디스플레이 장치(Display), 비디오 장치(VIDEO), 오디오 장치(AUDIO), 카메라 장치(CARAMA) 등과 같은 장치이며, 필요에 따라 메모리 콘트롤러(400)에 요청 및 데이터를 전송하거나 메모리 콘트롤러(400)로부터 전송된 데이터를 수신할 수 있다.A plurality of host devices HOST_0 to HOST_n are connected to a central processing unit (CPU), a graphic processing unit (GPU), a display device, a video device VIDEO, an audio device AUDAMA, ), And may transmit requests and data to the
메모리 장치(MEMORY)는 메모리 콘트롤러(400)로부터 전송된 요청에 따라 버스 인터페이스(440)를 통해 전달된 데이터를 저장하거나, 저장된 데이터를 출력할 수 있다. 메모리 장치(MEMORY)는 데이터를 저장하기 위한 다수의 메모리 뱅크(BK0 - BKm, m은 자연수)를 포함할 수 있다. 다수의 메모리 뱅크(BK0 - BKm) 각각은 다수의 워드라인(WL, 로우), 비트라인(BL, 컬럼) 및 메모리 셀(MC)을 포함할 수 있다(도 1의 BK0의 참조).The memory device MEMORY may store the data transferred through the
메모리 콘트롤러(400)는 호스트 장치들(HOST_0 - HOST_n)로부터의 읽기 또는 쓰기 요청을 수신하고 이에 대응하여 메모리 장치(MEMORY)가 요청된 동작을 수행하도록 제어할 수 있다. 이를 위해 메모리 콘트롤러(400)는 다수의 호스트 장치(HOST_0 - HOST_n)로부터 전송된 요청들을 스케줄링하여 메모리 장치(MEMORY)로 출력할 수 있다. 또한 메모리 콘트롤러(400)는 호스트 장치들(HOST_0 - HOST_n)로부터 전송된 데이터를 메모리 장치(MEMORY)로 전달하거나 메모리 장치(MEMORY)로부터 전송된 데이터를 호스트 장치들(HOST_0 - HOST_n)로 전달할 수 있다.The
다수의 요청 큐(410_0 - 410_n)는 다수의 호스트 장치(HOST_0 - HOST_n) 중 대응하는 호스트 장치로부터 전송된 요청들을 수신된 순서대로 저장할 수 있다. 다수의 요청 큐(410_0 - 410_n)는 저장된 요청들을 요청 스케줄러(430)로 출력(CMDs_0 - CMDs_n)할 수 있다.The plurality of request queues 410_0 through 410_n may store requests transmitted from the corresponding one of the plurality of host devices HOST_0 through HOST_n in the order in which they are received. The multiple request queues 410_0-410_n may output the stored requests to the request scheduler 430 (CMDs_0 - CMDs_n).
토큰 정보 생성부(420)는 호스트 장치들(HOST_0 - HOST_n)에 각각 대응하는 제1 및 제2토큰 개수에 관한 정보(TK0 - TKn, 이하 토큰 정보라 함)를 생성 및 출력할 수 있다. 이하에서 토큰이란 요청을 출력하기 위해 사용되는 댓가일 수 있다. 예를 들어, 호스트 장치A의 요청을 출력하기 위해서는 호스트 장치A에 할당된 하나 이상의 토큰 중 1개를 소모해야할 수 있다. 제1토큰과 제2토큰은 상술한 규칙들 중 다른 규칙에 따라 사용될 수 있다. 제1토큰을 사용하여 요청을 출력하는 경우 FR-FCFS 규칙에 따라 요청이 출력될 수 있다. 제2토큰은 제1토큰이 모두 소모된 후 사용되는 토큰이며, 제2토큰을 사용하여 요청을 출력하는 경우 FR 규칙에 따라 요청이 출력될 수 있다.The token
토큰 정보 생성부(420)는 제1 또는 제2토큰이 사용되어 요청이 출력되면 토큰 정보(TK0 - TKn)에 이를 반영하되, 호스트 장치의 요청을 출력하는 순서가 끝나면 해당 호스트 장치의 토큰 정보를 초기화할 수 있다. 따라서 토큰 정보 생성부(420)는 선택된 요청 큐의 다음 요청 큐가 선택되면, 이전에 선택된 요청 큐에 대응하는 토큰 정보(TK0 - TKn)를 초기화할 수 있다. 즉, 어떤 호스트 장치가 선택되어 제1 또는 제2토큰을 사용하여 요청들을 출력한 후 다음 호스트 장치가 선택되면 이전에 선택된 호스트 장치의 제1 및 제2토큰의 개수는 초기 상태로 되돌아갈 수 있다.When the first or second token is used and the request is output, the
다수의 호스트 장치(HOST_0 - HOST_n)에 할당되는 제1 및 제2토큰의 개수는 시스템에 요구되는 특성이나 각 호스트 장치의 특성에 따라 결정될 수 있다. 예를 들어, 시스템에 고성능(high performance)이 요구되는 경우 각 호스트 장치에 대해 중간 개수의 제1토큰과 많은 개수의 제2토큰이 할당되고, 고공정성(high fairness)가 요구되는 경우 각 호스트 장치에 대해 적은 개수의 제1토큰과 중간 개수의 제2토큰이 할당될 수 있다. 또한 높은 QoS(Qualtiy of Service)가 요구되는 CPU와 같은 호스트 장치와 높은 대역폭이 요구되는 GPU와 같은 호스트 장치가 시스템에 공존하는 경우 CPU와 같은 호스트 장치에는 많은 개수의 제1토큰과 적은 개수의 제2토큰이 할당되고, GPU와 같은 호스트 장치에는 적은 개수의 제1토큰과 중간 개수의 제2토큰이 할당될 수 있다.The number of first and second tokens allocated to the plurality of host devices HOST_0 to HOST_n may be determined according to characteristics required for the system or characteristics of each host device. For example, when a high performance is required for a system, an intermediate number of first tokens and a large number of second tokens are assigned to each host device, and when high fairness is required, A small number of first tokens and an intermediate number of second tokens may be assigned to the second token. In addition, when a host device such as a CPU requiring a high QoS (Quality of Service) and a host device such as a GPU requiring a high bandwidth coexist in the system, a host device such as a CPU has a large number of first tokens and a small number of 2 token, and a host device such as a GPU may be assigned a small number of first tokens and an intermediate number of second tokens.
요청 스케줄러(430)는 다수의 요청 큐(410_0 - 410_n)를 반복하여 차례로 선택하고, 선택된 요청 큐에 저장된 요청들을 제1 및 제2토큰을 사용하여 출력하되, 제1토큰 한 개당 하나의 요청을 출력하고, 제1토큰이 모두 소모되면 상기 제2토큰 한 개당 하나의 요청을 출력할 수 있다. 이때 요청 스케줄러(430)는 제1토큰을 우선적으로 사용하여 요청을 출력하고, 제1토큰이 모두 사용된 후에만 제2토큰을 사용하여 요청을 출력할 수 있다.The
요청 스케줄러(430)는 제1 또는 제2토큰이 남아있지만 선택된 요청 큐에 더 이상 출력할 요청이 없거나, 제1토큰을 모두 사용한 후 선택된 요청 큐에 저장된 요청들 중 상기 제2토큰을 사용하여 출력할 수 있는 요청이 없는 경우 선택된 요청 큐의 다음 요청 큐를 선택할 수 있다.The
요청 스케줄러(430)는 제1토큰을 사용하여 요청을 출력하는 경우 FR-FCFS(first-ready, first come-first serve) 규칙에 따라 요청을 순서대로 출력하고, 제2토큰을 사용하여 요청을 출력하는 경우 FR(first-ready) 규칙에 따라 요청을 순서대로 출력할 수 있다. FR-FCFS 규칙 또는 FR 규칙에 따라 요청의 순서를 결정하는 경우 바로 전에 선택된 요청에 대응하는 메모리 장치의 로우 어드레스와의 동일성 여부를 고려할 수 있다. 즉, FR 규칙에 의해 요청을 선택할 때에는 현재 오픈된 상태의 로우에 대응하는 요청인지 여부를 고려하여, 오픈된 상태의 로우에 대응하는 하나 이상의 요청이 존재하는 경우 이러한 요청들 중 먼저 수신된 것부터 출력하고, 존재하지 않은 경우 요청들을 출력하지 않을 수 있다.The
요청 스케줄러(430)는 다수의 요청 큐 중 요청이 저장되지 않은 요청 큐의 선택을 스킵하고, 다음 요청 큐를 선택할 수 있다. 요청 스케줄러(430)는 라운트 로빈(round robin) 방식에 따라 요청 큐를 선택할 수 있다.The
버스 인터페이스(440)는 호스트 장치들(HOST_0 - HOST_n)로부터 전송된 요청을 대응하는 요청 큐(410_0 - 410_n)들로 전달하고, 다수의 호스트 장치들(HOST_0 - HOST_n)로부터 전송된 데이터를 메모리 장치(MEMORY)로 전달하거나 메모리 장치(MEMORY)로부터 전송된 데이터를 다수의 호스트 장치들(HOST_0 - HOST_n)로 전달할 수 있다.The
다수의 호스트 장치(HOST_0 - HOST_n)에 할당된 제1 및 제2토큰의 개수는 고정적일수도 있지만 시스템의 동작 중에 필요에 따라 바뀔 수도 있다. 시스템은 서로 다른 2가지의 토큰을 이용해 요청을 스케줄링함으로써 고성능과 고공정성 사이에 트레이드 오프(trade-off)를 쉽게 조절할 수 있다. 따라서 시스템의 필요에 맞게 호스트 장치 별로 토큰을 세팅하여 정확하고 유연하게 QoS 조작이 가능할 수 있다.The number of first and second tokens assigned to the plurality of host devices HOST_0 to HOST_n may be fixed, but may change as needed during operation of the system. The system can easily trade-off between high performance and high fairness by scheduling requests using two different tokens. Therefore, the token can be set for each host device according to the needs of the system, so that QoS operation can be performed accurately and flexibly.
도 5는 도 4의 메모리 콘트롤러(400)의 동작을 설명하기 위한 도면이다.5 is a diagram for explaining the operation of the
도 5를 참조하여, 시스템이 2개의 호스트 장치(HOST_0, HOST_1)를 포함하고, 제1호스트 장치(HOST_0)에 제1 및 제2토큰이 각각 2개 및 4개 할당되고, 제2호스트 장치(HOST_1)에 제1 및 제2토큰이 각각 1개 및 4개 할당된 경우의 스케줄링 동작에 대해 설명할 수 있다.5, the system includes two host devices (HOST_0, HOST_1), two first and second tokens are assigned to the first host device HOST_0, respectively, and a second host device The first and second tokens are assigned to one and four HOST_1, respectively.
'HO'는 제1호스트 장치(HOST_0)에 대응하는 요청 큐를 나타내며, 요청 큐의 각 칸에 기재된 내용은 제1호스트 장치(HOST_0)로부터 전송되어 저장된 요청으로 위쪽으로 갈수록 수신된지 오래된, 즉 먼저 전송된 요청일 수 있다. 'HO' denotes a request queue corresponding to the first host device HOST_0, and contents described in each column of the request queue are transmitted from the first host device HOST_0 to the stored request, It may be the request sent.
'H1'는 제2호스트 장치(HOST_1)에 대응하는 요청 큐를 나타내며, 요청 큐의 각 칸에 기재된 내용은 제2호스트 장치(HOST_1)로부터 전송되어 저장된 요청으로 위쪽으로 갈수록 수신된지 오래된, 즉 먼저 전송된 요청일 수 있다. 'H1' denotes a request queue corresponding to the second host device HOST_1, and contents described in each column of the request queue are transmitted from the second host device HOST_1 to the stored request, It may be the request sent.
'TK1_0'은 제1호스트 장치(HOST_0)에 대응하는 제1토큰의 개수이고, 'TK2_0'는 제1호스트 장치(HOST_0)에 대응하는 제2토큰의 개수일 수 있다. 또한 'TK1_1'은 제2호스트 장치(HOST_1)에 대응하는 제1토큰의 개수이고, 'TK2_1'는 제2호스트 장치(HOST_1)에 대응하는 제2토큰의 개수일 수 있다.'TK1_0' may be the number of the first tokens corresponding to the first host device HOST_0 and 'TK2_0' may be the number of the second tokens corresponding to the first host device HOST_0. Also, 'TK1_1' may be the number of the first tokens corresponding to the second host device HOST_1, and 'TK2_1' may be the number of the second tokens corresponding to the second host device HOST_1.
참고로 요청은 2개의 문자로 구성되며, 2개의 문자 중 앞의 글자는 요청에 대응하는 로우 어드레스를 나타내고, 뒤의 글자는 요청에 대응하는 컬럼 어드레스를 나타낼 수 있다. 예를 들어, A1이라는 요청은 로우 어드레스인 A 및 컬럼 어드레스인 1에 대응하는 메모리 셀들에 대한 요청일 수 있다.For reference, the request consists of two characters, the first of the two letters represents the row address corresponding to the request, and the following letter can represent the column address corresponding to the request. For example, a request A1 may be a request for memory cells corresponding to a row address A and a
이하에서는 제1 및 제2호스트 장치(HOST_0, HOST_1)에 대응하는 요청 큐가 번갈아가면서 선택된다고 가정하고, 요청 스케줄러(430)의 스케줄링 동작에 대해 설명할 수 있다. 또한 현재 상태에서 요청 큐(HO, H1)에 저장된 요청들이 모두 출력될 때까지는 호스트 장치들(HOST_0, HOST_1)로부터 요청들이 전송되지 않는다고 가정할 수 있다.Hereinafter, the scheduling operation of the
먼저 요청 큐(HO)에 요청이 존재하기 때문에 요청 큐(HO)가 선택되고, 제1호스트 장치(HOST_0)의 제1토큰이 1개 사용되고, 요청(A1)이 출력될 수 있다. 다음으로 제1호스트 장치(HOST_0)의 제1토큰이 1개 사용되고, 요청(A1)과 로우 어드레스가 같은 요청들(A2 - A4) 중 가장 먼저 수신된 요청(A2)가 출력될 수 있다. 제1호스트 장치(HOST_0)의 제1토큰이 모두 소모된 상태이므로 제2토큰을 사용하여 제1호스트 장치(HOST_0)에서 수신된 요청을 출력하기 위해서는 요청 큐(H0)에 저장된 요청들 중 오픈된 로우에 대응하는 요청이 존재해야 할 수 있다. 오픈된 로우에 대응하는 요청이란 최근에 출력된 요청과 대응하는 로우 어드레스가 동일한 요청을 나타낼 수 있다. First, the request queue HO is selected because there is a request in the request queue HO, one first token of the first host device HOST_0 is used, and the request A1 is output. Next, the first token of the first host device (HOST_0) is used, and the first received request (A2) among the requests (A2 - A4) having the same row address as the request (A1) may be output. In order to output the request received from the first host device HOST_0 using the second token since the first token of the first host device HOST_0 is exhausted, There may be a request corresponding to a row. A request corresponding to an opened row may indicate a request that has the same row address as a recently issued request.
최근에 출력된 요청(A2)의 로우 어드레스는 A이고, 요청 큐(HO)에 저장된 요청들 중 로우 어드레스가 A인 요청들(A3, A4)이 존재하므로 먼저 제2토큰을 사용하여 A3가 출력되고, 다음으로 제2토큰을 사용하여 A4가 출력될 수 있다. 요청(A4)이 출력되고 난 후 요청 큐(HO)에는 더 이상 대응하는 로우 어드레스가 A인 요청이 존재하지 않고, 제1호스트 장치(HOST_0)에 대응하는 제1토큰은 모두 소모된 상태이므로 제1호스트 장치(HOST_0)로부터 전송된 요청들은 더이상 출력될 수 없다. 따라서 요청 큐(HO)의 선택이 해제되고, 다음 요청 큐(H1)가 선택될 수 있다. 다음 요청 큐(H1)가 선택되면 이전에 선택된 요청 큐(H0)의 토큰 정보는 초기화될 수 있다. 즉, 제1호스트 장치(HOST_0)에 대응하는 제1 및 제2토큰의 개수는 각각 2개와 4개로 초기화될 수 있다.Since the row address of the recently output request A2 is A and the requests A3 and A4 whose row address is A among the requests stored in the request queue HO are present, , And then A4 can be output using the second token. After the request A4 is outputted, there is no request with the corresponding row address A in the request queue HO, and since the first token corresponding to the first host device HOST_0 is all consumed, Requests sent from one host device (HOST_0) can no longer be output. Thus, the request queue HO is deselected, and the next request queue H1 can be selected. When the next request queue H1 is selected, the token information of the previously selected request queue H0 can be initialized. That is, the number of the first and second tokens corresponding to the first host device HOST_0 may be initialized to 2 and 4, respectively.
다음으로 제2호스트 장치(HOST_1)에 할당된 제1 및 제2토큰을 사용하여 요청 큐(H1)에 저장된 요청이 출력될 수 있다. 먼저 제1토큰을 사용하여 요청(C1)이 출력될 수 있다. 제1토큰이 모두 소모되면 제2토큰을 사용하여 제2호스트 장치(HOST_1)에서 전송된 요청이 출력될 수 있다. 제2토큰을 사용하는 경우최근에 출력된 요청(C1)과 대응하는 로우 어드레스가 동일한 요청만 출력될 수 있다. 따라서 제2토큰을 사용하여 요청(C2)가 출력되고, 더 이상 오픈된 로우에 대응하는 요청이 없으므로 다시 요청 큐(H0)가 선택될 수 있다. 이와 함께 제2호스트 장치(HOST_1)에 대응하는 제1 및 제2토큰의 개수가 초기화될 수 있다.The request stored in the request queue H1 may then be output using the first and second tokens allocated to the second host device HOST_1. First, a request (C1) may be output using the first token. If the first token is exhausted, the request sent from the second host device HOST_1 may be output using the second token. In the case of using the second token, only the request which is the same as the recently outputted request (C1) and the corresponding row address can be output. Therefore, the request C2 is output using the second token, and the request queue H0 can be selected again because there is no request corresponding to the row that is no longer open. At the same time, the number of the first and second tokens corresponding to the second host apparatus HOST_1 can be initialized.
다음으로 제1호스트 장치(HOST_0)에서 전송된 요청들이 출력될 수 있다. 사용되는 토큰과 출력되는 요청을 순서대로 나열해 보면, 제1토큰 - 요청(B1), 제1토큰 - 요청(B2), 제2토큰 - 요청(B3), 제2토큰 - 요청(B4)의 순서로 출력될 수 있다. 이후 요청 큐(H0)에는 더 이상 저장된 요청이 존재하지 않으므로 요청 큐(H1)가 선택되고 제2호스트 장치(HOST_1)에서 전송된 요청들이 출력될 수 있다. 이때 제1호스트 장치(HOST_0)에 대응하는 제1 및 제2토큰의 개수는 초기화될 수 있다.Next, the requests transmitted from the first host device HOST_0 may be output. The first token-request B1, the first token-request B2, the second token-request B3, the second token-request B4, and the token- Can be output in order. Since there is no more stored request in the request queue H0, the request queue H1 may be selected and the requests sent from the second host device HOST_1 may be output. At this time, the number of the first and second tokens corresponding to the first host device HOST_0 may be initialized.
다음으로 제2호스트 장치(H1)에서 전송된 요청들의 출력에 대해 사용되는 토큰과 출력되는 요청을 순서대로 나열해 보면, 제1토큰 - 요청(D1), 제2토큰 - 요청(D2), 제2토큰 - 요청(D3), 제2토큰 - 요청(D4), 제2토큰 - 요청(D5)의 순서로 출력될 수 있다. 제1 및 제2토큰이 모두 소모되었으므로 다음으로 요청 큐(H0)가 선택되어야 한다. 그런데 요청 큐(H0)에는 더 이상 저장된 요청이 존재하지 않으므로 요청 큐(H0)의 선택은 스킵되고, 다시 요청 큐(H1)가 선택될 수 있다. 이때 요청 큐(H1)는 재선택된 것이므로 이전의 선택에서 요청 큐(H1)의 선택이 해제 되었을 때 제2호스트 장치(HOST_1)에 대응하는 제1 및 제2토큰의 개수는 초기화된 상태일 수 있다. 따라서 제1토큰을 사용하여 요청(D6)이 출력될 수 있다.Next, the token used for the output of the requests transmitted from the second host device H1 and the output request are listed in order. The first token-request D1, the second token-request D2, 2 token-request D3, second token-request D4, second token-request D5. Since both the first and second tokens are exhausted, the next request queue H0 must be selected. However, since there is no more stored request in the request queue H0, the selection of the request queue H0 is skipped and the request queue H1 can be selected again. At this time, since the request queue H1 is reselected, when the selection of the request queue H1 is canceled in the previous selection, the number of the first and second tokens corresponding to the second host device HOST_1 may be initialized . Thus, the request D6 may be output using the first token.
이와 같이, 메모리 콘트롤러(600)는 다수의 요청 큐(HO, H1)를 반복하여 차례로 선택하고, 선택된 요청 큐에 저장된 요청들을 제1토큰을 사용해 FR-FCFS 규칙에 따라 선택하여 출력하고, 제1토큰을 모두 사용한 경우 제2토큰을 사용해 FR 규칙에 따라 선택하여 출력할 수 있다.As described above, the
도 6은 본 발명의 일 실시예에 따른 시스템에서 메모리 콘트롤러(600) 및 주변 구성을 나타낸 도면이다. 6 is a diagram illustrating a
도 6을 참조하면, 시스템은 다수의 호스트 장치(HOST_0 - HOST_n), 메모리 콘트롤러(600) 및 메모리 장치(MEMORY)를 포함할 수 있다. 메모리 콘트롤러(600)는 다수의 요청 큐(610_0 - 610_n), 토큰 정보 생성부(620), 요청 스케줄러(630) 및 버스 인터페이스(640)를 포함할 수 있다.Referring to FIG. 6, the system may include a plurality of host devices HOST_0 to HOST_n, a
도 6의 시스템에서는 도 4의 시스템과 달리 다수의 호스트 장치(HOST_0 - HOST_n) 중 최우선-호스트 장치가 존재할 수 있다. 최우선-호스트 장치는 요청에 대해 빠른 응답을 요구하는 호스트 장치로서 예를 들면, CPU와 같이 로우 레이턴(low latency)가 요구되는 호스트 장치일 수 있다.In the system of FIG. 6, there may be a priority-host device among a plurality of host devices HOST_0 to HOST_n unlike the system of FIG. Priority - A host device is a host device that requires a fast response to a request, for example, a host device that requires a low latency, such as a CPU.
도 6의 메모리 콘트롤러(600)의 구성 및 동작은 기본적으로 도 4의 메모리 콘트롤러(400)의 구성 및 동작과 유사할 수 있다. The configuration and operation of the
다만 도 6의 메모리 콘트롤러(600)의 요청 스케줄러(630)는 다수의 호스트 장치(HOST_0 - HOST_n) 중 하나 이상의 호스트 장치가 최우선-호스트 장치로 설정된 경우 최우선-호스트 장치로부터 요청이 수신되면, 현재 선택된 요청 큐의 요청들을 출력하는 동작을 중단하고, 최우선-호스트 장치에 대응하는 요청 큐를 선택하여 요청들을 출력할 수 있다.However, the
이를 위해 다수의 요청 큐 중 최우선-호스트 장치에 대응하는 요청 큐는 요청이 수신되면 최우선 신호(TOP_PRIORITY)를 활성화할 수 있다. 요청 스케줄러(630)는 최우선 신호(TOP_PRIORITY)가 활성화되면 진행하던 요청 출력 동작을 잠시 멈추고, 최우선-호스트 장치에 대응하는 요청 큐에 수신된 요청을 먼저 출력한 후 멈추었던 요청의 출력을 재개할 수 있다. 최우선-호스트 장치는 다수의 호스트 장치(HOST_0 - HOST_n) 중 하나 이상의 호스트 장치로서 고정적이거나 유동적으로 설정될 수 있다.To this end, a request queue corresponding to a priority-host device among a plurality of request queues can activate a TOP_PRIORITY signal when a request is received. The
도 7은 도 6의 메모리 콘트롤러(600)의 동작을 설명하기 위한 도면이다.7 is a diagram for explaining the operation of the
도 7을 참조하여, 시스템이 3개의 호스트 장치(HOST_0 - HOST_2)를 포함하고, 제1호스트 장치(HOST_0)에 제1 및 제2토큰이 각각 2개 및 4개 할당되고, 제2호스트 장치(HOST_1)에 제1 및 제2토큰이 각각 1개 및 4개 할당되고, 제3호스트 장치(HOST_2)에 제1 및 제2토큰이 각각 1개 및 2개 할당되고, 제3호스트 장치(HOST_2)가 최우선-호스트 장치인 경우의 스케줄링 동작에 대해 설명할 수 있다.7, the system includes three host devices (HOST_0 to HOST_2), two first and second tokens are assigned to the first host device HOST_0, respectively, and a second host device One and two tokens are allocated to the third host device HOST_2, one and two tokens are assigned to the third host device HOST_2, and one and two tokens are allocated to the third host device HOST_2, A scheduling operation in the case of a priority-host device can be described.
'TK1_2'은 제3호스트 장치(HOST_2)에 대응하는 제1토큰의 개수이고, 'TK2_2'는 제3호스트 장치(HOST_2)에 대응하는 제2토큰의 개수일 수 있다.'TK1_2' is the number of first tokens corresponding to the third host device HOST_2, and 'TK2_2' is the number of second tokens corresponding to the third host device HOST_2.
초기 상태에서 요청 큐들(HO - H2)에 저장된 요청들은 도 7에 도시된 바와 같다고 가정하자. 이때 요청 큐(H2)에는 요청이 저장되어 있다고 가정하자. 이 경우 요청 큐(H2)에 대한 선택이 스킵되므로 요청들이 출력되는 순서는 도 7에 도시된 바와 동일할 수 있다. 그런데, 요청들을 출력하는 도중에 최우선-호스트 장치인 호스트 장치(HOST_2)로부터 요청이 전송되었다고 하자. 이렇게 되면 요청 스케줄러(630)는 현재 선택된 요청 큐의 요청들을 스케줄링하여 출력하는 동작을 잠시 멈추고(STOP), 최우선 호스트 장치(HOST_2)로부터 전송된 요청들(E1, E2)을 출력할 수 있다. 최우선 호스트 장치(HOST_2)로부터 전송된 요청들(E1, E2)의 출력이 완료되면 중단된 요청 큐의 출력동작을 재개(RESUME)할 수 있다.Assume that the requests stored in the request queues HO - H2 in the initial state are as shown in FIG. At this time, it is assumed that the request is stored in the request queue H2. In this case, since the selection for the request queue H2 is skipped, the order in which the requests are output may be the same as shown in FIG. Assume that a request is sent from a host device (HOST_2), which is a priority-host device, while outputting requests. The
도 8은 본 발명의 일 실시예에 따른 시스템에서 메모리 콘트롤러(700) 및 주변 구성을 나타낸 도면이다. 8 is a diagram illustrating a memory controller 700 and a peripheral configuration in a system according to an embodiment of the present invention.
도 8을 참조하면, 시스템은 다수의 호스트 장치(HOST_0 - HOST_n), 메모리 콘트롤러(800) 및 메모리 장치(MEMORY)를 포함할 수 있다. 메모리 콘트롤러(800)는 다수의 요청 큐(810_0 - 810_n), 토큰 정보 생성부(820), 요청 스케줄러(830), 버스 인터페이스(840), 대역폭 모니터링부(850) 및 대역폭 조절부(860)를 포함할 수 있다.8, the system may include a plurality of host devices (HOST_0 to HOST_n), a
도 8의 시스템에서는 도 4의 시스템과 달리 메모리 콘트롤러(800)가 대역폭 모니터링부(850)를 포함할 수 있다. 도 8의 메모리 콘트롤러(800)의 구성 및 동작은 기본적으로 도 4의 메모리 콘트롤러(400)의 구성 및 동작과 유사할 수 있다. In the system of FIG. 8, the
다만 도 8의 메모리 콘트롤러(800)의 대역폭 모니터링부(850)는 다수의 호스트 장치(HOST_0 - HOST_n)와 메모리 콘트롤러(800) 사이의 대역폭을 모니터링할 수 있다. 보다 자세히 살펴보면, 대역폭 모니터링부(850)는 설정된 구간 동안 각 요청 큐(810_0 - 810_n)에 저장된 요청들 중 요청 스케줄러(830)를 통해 출력된 요청들의 개수를 검출하고, 검출된 결과에 기초하여 각 호스트 장치(HOST_0 - HOST_n)에 대한 실제 대역폭을 측정할 수 있다.However, the
대역폭 조절부(860)는 대역폭 모니터링부(850)의 모니터링 결과를 참조하여, 다수의 호스트 장치(HOST_0 - HOST_n) 중 실제 대역폭이 목표 대역폭보다 작은 호스트 장치에 할당된 제1 또는 제2토큰의 개수를 감소시키고, 실제 대역폭이 목표 대역폭보다 큰 호스트 장치에 할당된 제1 또는 제2토큰의 개수를 증가시킬 수 있다. 대역폭 조절부(860)는 설정된 구간 동안 요청 스케줄러(830)를 통해 출력된 요청의 개수가 목표값보다 작은 요청 큐의 경우 대응하는 제1 또는 제2토큰의 개수를 감소시키도록 토큰 정보 생성부(820)를 제어하고, 설정된 구간 동안 요청 스케줄러(830)를 통해 출력된 요청의 개수가 목표값보다 작은 요청 큐의 경우 대응하는 제1 또는 제2토큰의 개수를 증가시키도록 토큰 정보 생성부(820)를 제어할 수 있다.The bandwidth control unit 860 refers to the monitoring result of the
메모리 콘트롤러는 실제 대역폭과 목표 대역폭을 비교한 결과에 따라 각 호스트 장치에 할당된 토큰의 개수를 조절함으로써 시스템의 효율성을 극대화할 수 있다.The memory controller can maximize the efficiency of the system by adjusting the number of tokens allocated to each host device based on the comparison of the actual bandwidth and the target bandwidth.
메모리 콘트롤러의 스케줄링 방법은 두 단계로 구분될 수 있다. 먼저 첫번째 단계는 다수의 요청 큐 중 하나의 요청 큐, 즉 호스트 장치를 선택하는 단계이다. 두번째 단계는 요청 큐가 선택된 상태에서 제1 및 제2토큰을 사용하여 요청을 출력하는 단계이다. 이하에서는 상술한 첫번째 단계와 두번째 단계를 각각 도 9 및 도 10에서 나누어 설명할 수 있다.The scheduling method of the memory controller can be divided into two steps. First, the first step is to select a request queue, i.e., a host device, of a plurality of request queues. The second step is to output the request using the first and second tokens with the request queue selected. Hereinafter, the first step and the second step described above can be separately described in FIG. 9 and FIG. 10, respectively.
도 9는 본 발명의 일 실시예에 따른 메모리 콘트롤러의 스케줄링 방법을 설명하기 위한 순서도이다. 도 9는 상술한 메모리 콘트롤러의 스케줄링 방법의 첫번째 단계 및 두번째 단계 중 첫번째 단계, 즉 요청 큐(또는 호스트 장치)를 선택하는 단계를 설명하기 위한 도면이다.9 is a flowchart illustrating a method of scheduling a memory controller according to an embodiment of the present invention. 9 is a diagram for explaining a first step of the scheduling method of the memory controller and a first step of the second step, that is, a step of selecting a request queue (or a host device).
도 9를 참조하면, 메모리 콘트롤러의 스케줄링 방법은 토큰 할당 단계(S910), 호스트 장치 지정 단계(S920), 호스트 장치 선택 단계(S930), 요청 출력 단계(S940) 및 요청 수신 단계(S950)를 포함할 수 있다.9, the scheduling method of the memory controller includes a token allocation step S910, a host device designation step S920, a host device selection step S930, a request output step S940, and a request reception step S950 can do.
토큰 할당 단계(S910)는 호스트 장치를 선택하고, 요청을 출력하기 전에 미리 수행되는 단계로서, 토큰 할당 단계(S910)에서 제1 및 제2토큰의 개수는 호스트 장치의 특성이나 시스템의 요구 사항에 따라 결정될 수 있다. 토큰 할당에 관한 자세한 사항은 도 4의 설명에서 상술한 바와 동일할 수 있다.The token allocating step S910 is performed before selecting the host device and outputting the request. The number of the first and second tokens in the token allocating step S910 is determined according to the characteristics of the host device or the requirements of the system Can be determined accordingly. The details of the token allocation can be the same as described above in the description of FIG.
호스트 장치 지정 단계(S920)는 다수의 호스트 장치 중 다음에 선택될 호스트 장치를 지정하는 단계일 수 있다. 호스트 장치 지정 단계(S920)에서는 다음에 선택될 호스트 장치를 지정(S921)하고, 다음에 선택될 호스트 장치에 대응하는 요청 큐에 요청이 저장되었는지 판단(S922)하여, 다음에 선택될 호스트 장치에 대응하는 요청 큐에 요청이 저장된 경우(YES) 호스트 장치 선택 단계(S930)로 진행하여 지정된 호스트 장치에 대응하는 요청 큐를 선택하고, 다음에 선택될 호스트 장치에 대응하는 요청 큐에 요청이 저장되지 않은 경우(NO) 'S921'로 진행하여 다른 호스트 장치를 지정할 수 있다.The host device designation step (S920) may be a step of designating a next host device to be selected among a plurality of host devices. In the host device designation step S920, a host device to be selected next is specified (S921), and it is determined whether a request is stored in a request queue corresponding to the host device to be selected next (S922) If the request is stored in the corresponding request queue (YES), the process proceeds to the host device selection step (S930) to select the request queue corresponding to the specified host device, and the request is stored in the request queue corresponding to the host device to be selected next (NO), the flow advances to step S921 to designate another host device.
호스트 장치 선택 단계(S930)에서는 지정된 호스트 장치에 대응하는 요청 큐를 선택할 수 있다.In the host device selection step (S930), a request queue corresponding to the designated host device can be selected.
요청 출력 단계(S940)에서는 선택된 요청 큐에 저장된 요청들을 요청 스케줄러가 부여하는 순서에 따라 출력할 수 있다. 요청 출력 단계(S940)에서 각 요청들은 제1 또는 제2토큰을 사용하여 출력될 수 있다.In the request output step S940, the requests stored in the selected request queue may be outputted according to the order given by the request scheduler. In the request output step S940, each request may be output using the first or second token.
참고로 요청 출력 단계(S940)는 호스트 장치 지정 단계(S920)와 동시에 진행되거나 요청 출력 단계(S940)가 수행되는 구간의 일부 또는 전부가 호스트 장치 지정 단계(S920)가 수행되는 구간의 일부 또는 전부와 겹칠 수 있다.For reference, the request output step S940 may include a part or all of the section in which the host apparatus designation step S920 is performed simultaneously or the request outputting step S940 is performed, ≪ / RTI >
또한 토큰 할당 단계(S910), 호스트 장치 지정 단계(S920), 호스트 장치 선택 단계(S930) 및 요청 출력 단계(S940)와는 독립적으로 또는 관련되어서 다수의 호스트 장치로부터 전송된 요청을 다수의 호스트 장치에 각각 대응하는 요청 큐에 저장하는 요청 수신 단계(S950)가 수행될 수 있다. 요청 수신 단계(S950)는 토큰 할당 단계(S910), 호스트 장치 지정 단계(S920), 호스트 장치 선택 단계(S930) 또는 요청 출력 단계(S940)와 서로 다른 구간에서 수행될 수 있다. 또는 요청 수신 단계(S950)가 수행되는 구간의 일부 또는 전부는 토큰 할당 단계(S910), 호스트 장치 지정 단계(S920), 호스트 장치 선택 단계(S930) 또는 요청 출력 단계(S940)가 수행되는 구간의 일부 또는 전부과 겹칠 수 있다.It is also possible to send a request transmitted from a plurality of host devices to a plurality of host devices independently of or in association with the token allocation step S910, the host device designation step S920, the host device selection step S930 and the request output step S940 A request reception step (S950) may be performed in which each is stored in a corresponding request queue. The request reception step S950 may be performed in a different interval from the token allocation step S910, the host device designation step S920, the host device selection step S930, or the request output step S940. A part or all of the section in which the request reception step S950 is performed may be performed during the period in which the token allocation step S910, the host device designation step S920, the host device selection step S930, or the request output step S940 is performed Some or all of which may overlap.
도 10은 본 발명의 일 실시예에 따른 메모리 콘트롤러의 스케줄링 방법을 설명하기 위한 순서도이다. 도 10은 상술한 메모리 콘트롤러의 스케줄링 방법의 첫번째 단계 및 두번째 단계 중 두번째 단계, 즉 요청 큐가 선택된 상태에서 제1 및 제2토큰을 사용하여 요청을 출력하는 단계를 설명하기 위한 도면이다.10 is a flowchart illustrating a method of scheduling a memory controller according to an embodiment of the present invention. 10 is a diagram illustrating a step of outputting a request using the first and second tokens in a first step of the scheduling method of the memory controller and a second step of the second step, that is, a request queue is selected.
도 10을 참조하면, 메모리 콘트롤러의 스케줄링 방법은 제1토큰 확인 단계(S1010), 제1오픈 로우 검출 단계(S1020), 제1요청 출력 단계(S1030), 제1토큰 감소 단계(S1040), 제2토큰 확인 단계(S1050), 제2오픈 로우 검출 단계(S1060), 제2요청 출력 단계(S1070), 제2토큰 감소 단계(S1080), 선택 종료 및 토큰 초기화 단계(S1090)를 포함할 수 있다.10, a method of scheduling a memory controller includes a first token checking step S1010, a first open row detecting step S1020, a first request outputting step S1030, a first token reducing step S1040, 2 token verification step S1050, a second open row detection step S1060, a second request output step S1070, a second token reduction step S1080, a selection end and a token initialization step S1090 .
제1토큰 확인 단계(S1010)에서는 선택된 요청 큐에 대응하는 호스트 장치의 요청을 출력하기 위해 사용할 수 있는 제1토큰이 남아 있는지 확인할 수 있다. 제1제1토큰 확인 단계(S1010)에서 남아 있는 제1토큰의 개수가 0보다 큰 경우 제1오픈 로우 검출 단계(S1020)로 진행(YES)하고, 남아 있는 제1토큰의 개수가 0인 경우 제2토큰 확인 단계(S1050)로 진행(NO)할 수 있다.In the first token check step (S1010), it is possible to check whether there is a first token available for outputting a request of the host apparatus corresponding to the selected request queue. If the number of remaining first tokens in the first first token check step S1010 is greater than 0, the process proceeds to the first open row detecting step S1020 (YES). If the number of remaining first tokens is 0 And proceeds to the second token checking step S1050 (NO).
먼저 제1오픈 로우 검출 단계(S1020)로 진행한 경우, 요청 큐에 저장된 요청들 중 오픈 상태인 로우에 대응하는 요청이 존재하면 'YES'로 진행하여 제1요청 출력 단계(S1030)에서 오픈 상태인 로우에 대응하는 요청을 출력(S1031)하고, 요청 큐에 저장된 요청들 중 오픈 상태인 로우에 대응하는 요청이 존재하지 않으면 'NO'로 진행하여 제1요청 출력 단계(S1030)에서 수신된지 가장 오래된 요청을 출력(S1032)할 수 있다. 요청을 출력하고 난 후에는 제1토큰 감소 단계(S1040)에서 제1토큰의 개수가 1개 감소하고, 다시 제1토큰 확인 단계(S1010)로 진행할 수 있다.In the first open row detection step (S1020), if there is a request corresponding to the open row among the requests stored in the request queue, the process proceeds to 'YES' (S1031). If there is no request corresponding to the open row among the requests stored in the request queue, the process proceeds to NO to determine whether the request has been received in the first request output step (S1030) An old request can be output (S1032). After outputting the request, the number of first tokens is decreased by one in the first token decreasing step (S1040), and the process may proceed to the first token check step (S1010) again.
다음으로 제2토큰 확인 단계(S1050)로 진행한 경우 선택된 요청 큐에 대응하는 호스트 장치의 요청을 출력하기 위해 사용할 수 있는 제2토큰이 남아 있는지 확인할 수 있다. 제2토큰 확인 단계(S1050)에서 남아 있는 제2토큰의 개수가 0보다 큰 경우 제2오픈 로우 검출 단계(S1060)로 진행(YES)하고, 남아 있는 제2토큰의 개수가 0인 경우 선택 종료 및 토큰 초기화 단계(S1090)로 진행할 수 있다.Next, when proceeding to the second token checking step (S1050), it is possible to check whether a second token usable for outputting a request of the host apparatus corresponding to the selected request queue remains. If the number of remaining second tokens is greater than 0 in the second token checking step (S1050), the process proceeds to a second open row detecting step (S1060) (YES). If the number of remaining second tokens is 0, And the token initialization step (S1090).
제2오픈 로우 검출 단계(S1060)로 진행한 경우, 요청 큐에 저장된 요청들 중 오픈 상태인 로우에 대응하는 요청이 존재하면 'YES'로 진행하여 제2요청 출력 단계(S1070)에서 오픈 상태인 로우에 대응하는 요청을 출력하고, 요청 큐에 저장된 요청들 중 오픈 상태인 로우에 대응하는 요청이 존재하지 않으면 'NO'로 진행하여 선택 종료 및 토큰 초기화 단계(S1090)로 진행할 수 있다. 요청을 출력하고 난 후에는 제2토큰 감소 단계(S1080)에서 제1토큰의 개수가 1개 감소하고, 다시 제2토큰 확인 단계(S1050)로 진행할 수 있다.In the second open row detection step S1060, if there is a request corresponding to the open row among the requests stored in the request queue, the process proceeds to YES and the second request output step S1070 And if the request corresponding to the open row of the requests stored in the request queue does not exist, the flow advances to 'NO' to proceed to the selection end and token initialization step (S1090). After outputting the request, the number of first tokens is decreased by one in the second token decreasing step (S1080), and the process may proceed to the second token checking step (S1050) again.
선택 종료 및 토큰 초기화 단계(S1090)에서는 현재 선택된 요청 큐의 선택 상태를 종료하고, 다른 요청 큐를 선택하기 위한 단계(도 9 참조)로 진행할 수 있다. 이때 현재 선택된 요청 큐 및 호스트 장치에 대응하는 제1 및 제2토큰의 개수는 초기화될 수 있다.In the selection end and token initialization step S1090, the selection state of the currently selected request queue is terminated and the process proceeds to a step for selecting another request queue (see FIG. 9). At this time, the number of the first and second tokens corresponding to the currently selected request queue and the host device can be initialized.
상술한 요청 출력 과정에서 제1토큰을 사용하여 요청을 출력하는 단계의 경우 FR-FCFS(first-ready, first come-first serve) 규칙에 따라 요청을 순서대로 출력하고, 제2토큰을 사용하여 요청을 출력하는 단계에서는 FR(first-ready) 규칙에 따라 요청을 순서대로 출력할 수 있다. 또한 FR-FCFS 규칙 또는 FR 규칙에 따라 요청의 순서를 결정하는 경우 바로 전에 선택 및 출력된 요청에 대응하는 메모리 장치의 로우 어드레스와의 동일성 여부를 고려할 수 있다.In the step of outputting a request using the first token in the above-described request outputting process, the request is output in order according to the first-ready (FR-FCFS) rule, It is possible to output the requests in order according to a first-ready (FR) rule. In addition, when determining the order of the requests according to the FR-FCFS rule or the FR rule, it is possible to consider whether or not the row address of the memory device corresponding to the just selected and outputted request is the same.
도 11은 본 발명의 일 실시예에 따른 메모리 콘트롤러의 스케줄링 방법을 설명하기 위한 순서도이다. 도 11에 도시한 메모리 콘트롤러의 스케줄링 방법은 도 9에 도시된 메모리 콘트롤러의 스케줄링 방법과 달리 최우선 호스트 장치로부터 요청이 수신되면 이를 고려하여 요청들의 스케줄링을 진행할 수 있다.11 is a flowchart illustrating a scheduling method of a memory controller according to an embodiment of the present invention. The scheduling method of the memory controller shown in FIG. 11 is different from the scheduling method of the memory controller shown in FIG. 9, and the scheduling of requests can be performed considering the request from the host device.
도 11을 참조하면, 메모리 콘트롤러의 스케줄링 방법은 토큰 할당 단계(S1110), 호스트 장치 지정 단계(S1120), 호스트 장치 선택 단계(S1130), 요청 출력 단계(S1140), 요청 수신 단계(S1150) 및 최우선-호스트 장치 요청 스케줄링 단계(S1160)를 포함할 수 있다.Referring to FIG. 11, a method of scheduling a memory controller includes a token allocation step S1110, a host device designation step S1120, a host device selection step S1130, a request output step S1140, a request reception step S1150, - Scheduling a host device request (S1160).
도 11의 메모리 콘트롤러의 스케줄링 방법은 도 9의 메모리 콘트롤러의 스케줄링 방법과 유사하게 동작하되, 어떤 단계를 진행중이던 요청 수신 단계(S1150)를 진행하는 도중에 'S1101'에서 최우선-호스트 장치로부터 요청이 입력되면, 진행 중인 단계를 중단하고 최우선-호스트 장치 요청 처리 단계(S1160)로 진행(YES, STOP)하여 최우선-호스트 장치로부터 전송된 요청들을 스케줄링하고, 최우선-호스트 장치로부터 전송된 요청들의 스케줄링이 완료되면 이전에 진행 중인 단계를 재개(RESUME)할 수 있다. 또한 'S1101'에서 최우선-호스트 장치로부터 요청이 입력되지 않은 경우에는 'NO'로 진행될 수 있다.The scheduling method of the memory controller of FIG. 11 operates in a manner similar to the scheduling method of the memory controller of FIG. 9, except that in step S1150, The scheduling of the requests transmitted from the host apparatus is completed, and the scheduling of the requests transmitted from the host apparatus is completed (step S1160) (RESUME) the previous step. Also, if the request is not input from the host device, the process can proceed to 'NO' in 'S1101'.
이때 최우선-호스트 장치 요청 스케줄링 단계(S1160)는 도 10에서 설명한 선택된 요청 큐에 저장된 요청들의 스케줄링 방법과 동일할 수 있다.At this time, the priority-host device request scheduling step (S1160) may be the same as the scheduling method of the requests stored in the selected request queue described in FIG.
도 12는 본 발명의 일 실시예에 따른 메모리 콘트롤러의 스케줄링 방법을 설명하기 위한 순서도이다. 도 12에 도시한 메모리 콘트롤러의 스케줄링 방법은 도 9에 도시된 메모리 콘트롤러의 스케줄링 방법과 달리 각 호스트 장치의 실제 대역폭과 목표 대역폭을 고려하여 각 호스트 장치에 할당된 제1 및 제2토큰의 개수를 조절할 수 있다.12 is a flowchart illustrating a method of scheduling a memory controller according to an embodiment of the present invention. The scheduling method of the memory controller shown in FIG. 12 differs from the scheduling method of the memory controller shown in FIG. 9 in that the number of the first and second tokens allocated to each host device is calculated in consideration of the actual bandwidth and the target bandwidth of each host device Can be adjusted.
도 12를 참조하면, 메모리 콘트롤러의 스케줄링 방법은 토큰 할당 단계(S1210), 호스트 장치 지정 단계(S1220), 호스트 장치 선택 단계(S1230), 요청 출력 단계(S1240), 요청 수신 단계(S1250), 대역폭 모니터링 단계(S1260) 및 대역폭 비교 단계(S1270)를 포함할 수 있다. 12, the scheduling method of the memory controller includes a token allocation step S1210, a host device designation step S1220, a host device selection step S1230, a request output step S1240, a request reception step S1250, A monitoring step S1260 and a bandwidth comparison step S1270.
먼저 토큰 할당 단계(S1210)의 경우 초기 할당 단계(S1211), 토큰 증가 단계(S1212), 토큰 감소 단계(S1213)로 나뉠 수 있다. 초기 할당 단계(S1211)는 실제 대역폭과 목표 대역폭의 비교 없이 토큰이 할당되는 단계 일 수 있다. 토큰 증가 단계(S1212)는 대역폭 모니터링 결과 실제 대역폭이 목표 대역폭보다 큰 호스트 장치에 할당된 제1 또는 제2토큰의 개수를 증가시키는 단계일 수 있다. 토큰 감소 단계(S1213)는 대역폭 모니터링 결과 실제 대역폭이 목표 대역폭보다 작은 호스트 장치에 할당된 제1 또는 제2토큰의 개수를 증가시키는 단계일 수 있다.In the case of the token allocation step S1210, an initial allocation step S1211, a token increase step S1212, and a token reduction step S1213 may be performed. The initial allocation step S1211 may be a step in which a token is allocated without comparing the actual bandwidth and the target bandwidth. The step of increasing the token S1212 may be a step of increasing the number of the first or second tokens allocated to the host device in which the actual bandwidth is larger than the target bandwidth as a result of the bandwidth monitoring. The token reduction step S1213 may be a step of increasing the number of first or second tokens allocated to the host apparatus whose actual bandwidth is smaller than the target bandwidth as a result of bandwidth monitoring.
'S1201'에서 토큰을 재할당하지 않는 경우 'NO'로 진행할 수 있다. 토큰을 재할당하는 경우 'YES'로 진행하여 대역폭 모니터링 단계(S1260) 및 대역폭 비교 단계(S1270)를 진행할 수 있다.If the token is not reassigned in 'S1201', the process can proceed to 'NO'. If the token is reallocated, the process proceeds to 'YES' to proceed with the bandwidth monitoring step S1260 and the bandwidth comparing step S1270.
대역폭 모니터링 단계(S1260)에서는 설정된 구간 동안 메모리 콘트롤러의 요청 스케줄링 결과를 참조하여 각 호스트 장치에 대응하는 실제 대역폭을 검출할 수 있다. 대역폭 비교 단계(S1270)는 실제 대역폭과 목표 대역폭을 비교하여 실제 대역폭이 목표 대역폭보다 큰 경우 토큰 증가 단계(S1212)로 진행(UP)하고, 실제 대역폭과 목표 대역폭을 비교하여 실제 대역폭이 목표 대역폭보다 작은 경우 토큰 감소 단계(S1213)로 진행(DOWN)할 수 있다.In the bandwidth monitoring step S1260, the actual bandwidth corresponding to each host device can be detected by referring to the request scheduling result of the memory controller during the set interval. The bandwidth comparing step S1270 compares the actual bandwidth with the target bandwidth, and if the actual bandwidth is larger than the target bandwidth, proceeds to the step of increasing the token (S1212), compares the actual bandwidth with the target bandwidth, If it is smaller, the process may proceed to the token reduction step S1213.
상술한 요청은 호스트 장치로부터 전송된 데이터를 메모리 장치에 저장하는 라이트 동작을 수행하는 내용을 포함하거나 메모리 장치로부터 데이터를 출력하여 호스트 장치로 전달하는 리드 동작을 수행하는 내용을 포함할 수 있다.The above-mentioned request may include a content for performing a write operation to store data transmitted from a host device in a memory device, or may be a content for outputting data from a memory device and performing a read operation to transfer the data to the host device.
본 발명의 기술사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야의 전문가라면 본 발명의 기술사상의 범위 내에서 다양한 실시예가 가능함을 알 수 있을 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. It will be apparent to those skilled in the art that various modifications and variations are possible in light of the above teachings.
Claims (20)
상기 다수의 호스트 장치에 각각 대응하는 제1 및 제2토큰의 개수에 관한 정보를 생성하는 토큰 정보 생성부; 및
상기 다수의 요청 큐를 반복하여 차례로 선택하고, 상기 선택된 요청 큐에 저장된 요청들을 상기 제1 및 제2토큰을 사용하여 출력하되, 상기 제1토큰 한 개당 하나의 요청을 출력하고, 상기 제1토큰이 모두 소모되면 상기 제2토큰 한 개당 하나의 요청을 출력하는 요청 스케줄러
를 포함하는 메모리 콘트롤러.
A plurality of request queues for storing requests transmitted from corresponding ones of a plurality of host devices;
A token information generator for generating information on the number of first and second tokens corresponding to the plurality of host devices, respectively; And
Outputting one request per one of said first tokens, outputting a request for said first token, and outputting a request for said second token, A request scheduler for outputting one request per one of the second tokens,
.
상기 토큰 정보 생성부는
상기 선택된 요청 큐의 다음 요청 큐가 선택되면, 이전에 선택된 요청 큐에 대응하는 상기 제1 및 제2토큰 개수에 관한 정보를 초기화하는 메모리 콘트롤러.
The method according to claim 1,
The token information generating unit
And to initialize information about the first and second number of tokens corresponding to a previously selected request queue if the next request queue of the selected request queue is selected.
상기 요청 스케줄러는
상기 제1 또는 제2토큰이 남아있지만 상기 선택된 요청 큐에 더 이상 출력할 요청이 없거나, 상기 제1토큰을 모두 사용한 후 상기 선택된 요청 큐에 저장된 요청들 중 상기 제2토큰을 사용하여 출력할 수 있는 요청이 없는 경우 상기 선택된 요청 큐의 다음 요청 큐를 선택하는 메모리 콘트롤러.
The method according to claim 1,
The request scheduler
The first or second token is still present but there is no more request to output to the selected request queue or after using all of the first token and using the second token among the requests stored in the selected request queue And to select the next request queue of the selected request queue if there is no request.
상기 요청 스케줄러는
상기 제1토큰을 사용하여 요청을 출력하는 경우 FR-FCFS(first-ready, first come-first serve) 규칙에 따라 요청을 순서대로 출력하고, 상기 제2토큰을 사용하여 요청을 출력하는 경우 FR(first-ready) 규칙에 따라 요청을 순서대로 출력하는 메모리 콘트롤러.
The method according to claim 1,
The request scheduler
When a request is output using the first token, the request is output in order according to a first-ready (FR-FCFS) rule. When a request is output using the second token, first-ready rules to output requests in order.
상기 FR-FCFS 규칙 또는 상기 FR 규칙에 따라 요청의 순서를 결정하는 경우 바로 전에 선택된 요청에 대응하는 메모리 장치의 로우 어드레스와의 동일성 여부를 고려하는 메모리 콘트롤러.
5. The method of claim 4,
And when the order of the request is determined according to the FR-FCFS rule or the FR rule, it considers whether or not the row address is the same as the row address of the memory device corresponding to the selected request.
상기 다수의 호스트 장치에 할당된 상기 제1 및 제2토큰의 개수는 상기 호스트 장치의 특성에 따라 결정되는 메모리 콘트롤러.
The method according to claim 1,
Wherein the number of the first and second tokens allocated to the plurality of host devices is determined according to characteristics of the host device.
상기 요청 스케줄러는
상기 다수의 호스트 장치 중 하나 이상의 호스트 장치가 최우선-호스트 장치로 설정된 경우 상기 최우선-호스트 장치로부터 요청이 수신되면, 현재 선택된 요청 큐의 요청들을 출력하는 동작을 중단하고, 상기 최우선-호스트 장치에 대응하는 요청 큐를 선택하여 요청들을 출력하는 메모리 콘트롤러.
The method according to claim 1,
The request scheduler
When one or more host devices of the plurality of host devices are set as a first-priority host device, when a request is received from the first-priority host device, outputting requests of the currently selected request queue is stopped, And outputting the requests.
상기 요청 스케줄러는
상기 다수의 요청 큐 중 요청이 저장되지 않은 요청 큐의 선택을 스킵하는 메모리 콘트롤러.
The method according to claim 1,
The request scheduler
And skips the selection of the request queue from which the request is not stored among the plurality of request queues.
상기 다수의 호스트 장치와 메모리 콘트롤러 사이의 대역폭을 모니터링하는 대역폭 모니터링부; 및
상기 대역폭 모니터링부의 모니터링 결과를 참조하여 상기 토큰 정보 저장부에 저장된 상기 제1 및 제2토큰의 개수에 관한 정보를 조절하는 대역폭 조절부
를 더 포함하는 메모리 콘트롤러.
The method according to claim 1,
A bandwidth monitor for monitoring a bandwidth between the plurality of host devices and the memory controller; And
And a bandwidth control unit for controlling information on the number of the first and second tokens stored in the token information storage unit by referring to the monitoring result of the bandwidth monitoring unit,
Further comprising a memory controller.
상기 대역폭 조절부는
상기 다수의 호스트 장치 중 실제 대역폭이 목표 대역폭보다 작은 호스트 장치에 할당된 상기 제1 또는 제2토큰의 개수를 감소시키고, 상기 실제 대역폭이 상기 목표 대역폭보다 큰 호스트 장치에 할당된 상기 제1 또는 제2토큰의 개수를 증가시키는 메모리 콘트롤러.
10. The method of claim 9,
The bandwidth controller
Wherein the number of the first or second tokens allocated to the host device whose actual bandwidth is smaller than the target bandwidth is decreased and the number of the first or second tokens allocated to the host device 2 A memory controller that increases the number of tokens.
상기 다수의 호스트 장치 각각에 하나 이상의 제1 및 제2토큰을 할당하는 단계;
상기 다수의 호스트 장치로부터 전송된 요청을 상기 다수의 호스트 장치에 각각 대응하는 요청 큐에 저장하는 단계;
상기 다수의 요청 큐 중 하나의 요청 큐를 선택하는 단계;
상기 제1토큰 한 개당 상기 선택된 요청 큐에 저장된 요청을 하나씩 출력하는 단계; 및
상기 제1토큰이 모두 소모되면, 상기 제2토큰 한 개당 상기 선택된 요청 큐에 저장된 요청을 하나씩 출력하는 단계
를 포함하는 메모리 콘트롤러의 요청 스케줄링 방법.
1. A request scheduling method for a memory controller that outputs requests sent from a plurality of host devices to a memory device,
Assigning one or more first and second tokens to each of the plurality of host devices;
Storing a request transmitted from the plurality of host devices in a request queue corresponding to each of the plurality of host devices;
Selecting a request queue of one of the plurality of request queues;
Outputting the requests stored in the selected request queue for each of the first tokens one by one; And
Outputting the requests stored in the selected request queue per one of the second tokens one by one if the first token is exhausted
And a memory controller for storing the request.
상기 선택된 요청 큐의 다음 요청 큐가 선택되면, 이전에 선택된 요청 큐에 할당된 상기 제1 및 제2토큰의 개수는 초기화되는 메모리 콘트롤러의 요청 스케줄링 방법.
12. The method of claim 11,
Wherein when the next request queue of the selected request queue is selected, the number of the first and second tokens allocated to the previously selected request queue is initialized.
상기 제1 또는 제2토큰이 남아있지만 상기 선택된 요청 큐에 더 이상 출력할 요청이 없거나, 상기 제1토큰을 모두 사용한 후 상기 선택된 요청 큐에 저장된 요청들 중 상기 제2토큰을 사용하여 출력할 수 있는 요청이 없는 경우 상기 선택된 요청 큐의 다음 요청 큐를 선택하는 메모리 콘트롤러의 요청 스케줄링 방법.
12. The method of claim 11,
The first or second token is still present but there is no more request to output to the selected request queue or after using all of the first token and using the second token among the requests stored in the selected request queue And if there is no request, selecting a next request queue of the selected request queue.
상기 제1토큰을 사용하여 요청을 출력하는 단계에서는 FR-FCFS(first-ready, first come-first serve) 규칙에 따라 요청을 순서대로 출력하고,
상기 제2토큰을 사용하여 요청을 출력하는 단계에서는 FR(first-ready) 규칙에 따라 요청을 순서대로 출력하는 메모리 콘트롤러의 요청 스케줄링 방법.
12. The method of claim 11,
In the step of outputting the request using the first token, the request is outputted in order according to the first-ready (FR-FCFS) rule,
And outputting a request using the second token, the request being output in order according to a first-ready (FR) rule.
상기 FR-FCFS 규칙 또는 상기 FR 규칙에 따라 요청의 순서를 결정하는 경우 바로 전에 선택된 요청에 대응하는 메모리 장치의 로우 어드레스와의 동일성 여부를 고려하는 메모리 콘트롤러의 요청 스케줄링 방법.
15. The method of claim 14,
When determining the order of a request according to the FR-FCFS rule or the FR rule, whether or not the address is the same as the row address of the memory device corresponding to the selected request.
상기 제1 및 제2토큰을 할당하는 단계에서
상기 다수의 호스트 장치에 할당된 상기 제1 및 제2토큰의 개수는 상기 호스트 장치의 특성에 따라 결정되는 메모리 콘트롤러의 요청 스케줄링 방법.12. The method of claim 11,
In the step of allocating the first and second tokens
Wherein the number of the first and second tokens assigned to the plurality of host devices is determined according to the characteristics of the host device.
상기 다수의 호스트 장치 중 하나 이상의 호스트 장치가 최우선-호스트 장치로 설정된 경우 상기 최우선-호스트 장치로부터 요청이 수신되면, 현재 선택된 요청 큐의 요청들을 출력하는 동작을 중단하고, 상기 요청 큐를 선택하는 단계에서 상기 최우선-호스트 장치에 대응하는 요청 큐를 선택하는 메모리 콘트롤러의 요청 스케줄링 방법.
12. The method of claim 11,
Stopping operations of outputting requests of a currently selected request queue when the request is received from the first-priority host apparatus when one or more host apparatuses of the plurality of host apparatuses are set as a first-priority host apparatus, Selecting a request queue corresponding to the highest priority host device in the request queue.
상기 요청 큐를 선택하는 단계에서
상기 다수의 요청 큐를 반복하여 설정된 순서로 선택하되, 상기 요청이 저장되지 않은 요청 큐의 선택을 스킵하는 메모리 콘트롤러의 요청 스케줄링 방법.
12. The method of claim 11,
In the step of selecting the request queue
Wherein the plurality of request queues are repeatedly selected in a predetermined order, and a selection of a request queue in which the request is not stored is skipped.
상기 다수의 호스트 장치와 메모리 콘트롤러 사이의 대역폭을 모니터링하는 단계
를 더 포함하는 메모리 콘트롤러의 요청 스케줄링 방법.
12. The method of claim 11,
Monitoring the bandwidth between the plurality of host devices and the memory controller
Further comprising the steps of:
상기 제1 및 제2토큰을 할당하는 단계에서
상기 대역폭 모니터링부의 모니터링 결과를 참조하여, 상기 다수의 호스트 장치 중 실제 대역폭이 목표 대역폭보다 작은 호스트 장치에 할당된 상기 제1 또는 제2토큰의 개수를 감소시키고, 상기 실제 대역폭이 상기 목표 대역폭보다 큰 호스트 장치에 할당된 상기 제1 또는 제2토큰의 개수를 증가시키는 메모리 콘트롤러의 요청 스케줄링 방법.
20. The method of claim 19,
In the step of allocating the first and second tokens
Wherein the monitoring unit monitors the monitoring result of the bandwidth monitoring unit to reduce the number of the first or second tokens allocated to the host apparatus whose actual bandwidth is smaller than the target bandwidth among the plurality of host apparatuses, And to increase the number of the first or second tokens assigned to the host device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/441,818 US10157023B2 (en) | 2016-02-25 | 2017-02-24 | Memory controller and request scheduling method using request queues and first and second tokens |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160022712 | 2016-02-25 | ||
KR20160022712 | 2016-02-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20170100414A true KR20170100414A (en) | 2017-09-04 |
Family
ID=59924191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170003473A KR20170100414A (en) | 2016-02-25 | 2017-01-10 | Memory controller and request scheduling method using the same |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20170100414A (en) |
-
2017
- 2017-01-10 KR KR1020170003473A patent/KR20170100414A/en not_active Application Discontinuation
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10157023B2 (en) | Memory controller and request scheduling method using request queues and first and second tokens | |
US6665740B1 (en) | Logical volume selection in a probability-based job scheduler | |
US9563369B2 (en) | Fine-grained bandwidth provisioning in a memory controller | |
US8392635B2 (en) | Selectively enabling a host transfer interrupt | |
US8490107B2 (en) | Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels | |
CN101669096B (en) | Memory access control device | |
WO2022095815A1 (en) | Graphics card memory management method and apparatus, device, and system | |
JP2003256221A (en) | Parallel process executing method and multi-processor type computer | |
GB2388216A (en) | Multi-bank scheduling to improve performance on tree access in a dram based RAM subsystem | |
KR20190027677A (en) | Storage device and controllers included in the storage device | |
CN1070751A (en) | Multi-media signal processor computer system | |
WO2011087522A1 (en) | Adaptive bandwidth allocation for memory | |
JPH04119445A (en) | Computer system | |
JPH02118842A (en) | Dynamic load balance for multiple user's computer | |
CN108184270A (en) | A kind of resource regulating method and system based on TDMA system | |
US20240220127A1 (en) | Memory controller for supporting processing-in-memory | |
US7613856B2 (en) | Arbitrating access for a plurality of data channel inputs with different characteristics | |
JP5911548B1 (en) | Apparatus, method, and computer program for scheduling access request to shared memory | |
KR20170100414A (en) | Memory controller and request scheduling method using the same | |
KR20190074823A (en) | FIFO buffer system for QoS control | |
KR20220001811A (en) | Memory controller of graphic processing unit capable of improving energy efficiency and method for controlling memory thereof | |
CN112631757B (en) | DDR4 multi-user access scheduling method and device | |
US20150189013A1 (en) | Adaptive and prioritized replication scheduling in storage clusters | |
US7260113B2 (en) | Method and apparatus for balancing a request load of communication channels | |
JP5678923B2 (en) | Storage system, input / output control device, input / output control method, and computer program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |