KR20170100414A - Memory controller and request scheduling method using the same - Google Patents

Memory controller and request scheduling method using the same Download PDF

Info

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
Application number
KR1020170003473A
Other languages
Korean (ko)
Inventor
문영석
김홍식
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to US15/441,818 priority Critical patent/US10157023B2/en
Publication of KR20170100414A publication Critical patent/KR20170100414A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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

The present invention relates to a memory controller which comprises: a plurality of request queues for storing a request transmitted from a corresponding host device among a plurality of host devices; a token information generating unit for generating information on the number of first and second tokens corresponding to each of the plurality of host devices; and a request scheduler for sequentially selecting by repeating the plurality of request queues, outputting requests stored in the selected request queue by using the first and second tokens, outputting one or more requests per one first token, and outputting one per one second token when the first tokens are all consumed. The memory controller can optimize an output order of the plurality of host devices by determining an output order of the stored requests by using two different types of tokens assigned to each host device.

Description

메모리 콘트롤러 및 이를 사용한 요청 스케줄링 방법{MEMORY CONTROLLER AND REQUEST SCHEDULING METHOD USING THE SAME}[0001] MEMORY CONTROLLER AND REQUEST SCHEDULING METHOD USING THE SAME [0002]

본 특허문헌은 메모리 콘트롤러 및 메모리 콘트롤러의 요청 스케줄링 방법에 관한 것이다.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 system 100,
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 memory controller 400 and peripheral configuration in a system according to one embodiment of the present invention,
5 is a diagram for explaining the operation of the memory controller 400 of FIG. 4,
Figure 6 illustrates a memory controller 600 and peripheral configuration in a system according to one embodiment of the present invention,
FIG. 7 is a diagram for explaining the operation of the memory controller 600 of FIG. 6,
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 system 100. As shown in FIG.

도 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 memory controller 120, and a memory device 130.

다수의 호스트 장치(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 memory controller 120 .

메모리 콘트롤러(120)는 호스트 장치들(110_0 - 110_n)로부터 전송된 요청을 스케줄링하여 메모리 장치(130) 제어하고, 메모리 장치(130)와 다수의 호스트 장치(110_0 - 110_n)들 간에 데이터를 전달할 수 있다. 메모리 콘트롤러(120)는 버스 인터페이스(121), 다수의 요청 큐(122_0 - 122_n) 및 요청 스케줄러(123)를 포함할 수 있다.The memory controller 120 may schedule requests sent from the host devices 110_0-110_n to control the memory device 130 and transfer data between the memory device 130 and the plurality of host devices 110_0-110_n have. The memory controller 120 may include a bus interface 121, a plurality of request queues 122_0 - 122_n, and a request scheduler 123.

버스 인터페이스(121)는 호스트 장치들(110_0 - 110_n)로부터 전송된 요청을 대응하는 요청 큐(122_0 - 122_n)들로 전달하고, 다수의 호스트 장치들(110_0 - 110_n)과 메모리 장치(130) 사이에 데이터를 전달할 수 있다.The bus interface 121 communicates the requests sent from the host devices 110_0-110_n to the corresponding request queues 122_0-122_n and between the host devices 110_0-110_n and the memory device 130 As shown in FIG.

다수의 요청 큐(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 bus interface 121 in the inputted order Can be stored.

요청 스케줄러(123)는 다수의 요청 큐(122_0 - 122_n)에 저장된 요청들을 설정된 규칙에 따라 스케줄링하고, 요청들을 스케줄링된 순서대로 메모리 장치(130)로 출력할 수 있다.The request scheduler 123 may schedule requests stored in the plurality of request queues 122_0 through 122_n according to a set rule and output the requests to the memory device 130 in a scheduled order.

메모리 장치(130)는 메모리 콘트롤러(120)로부터 전송된 요청에 따라 버스 인터페이스(121)를 통해 전달된 데이터를 저장하거나, 저장된 데이터를 출력할 수 있다. 메모리 장치(130)는 데이터를 저장하기 위한 다수의 메모리 뱅크(BK0 - BKm, m은 자연수)를 포함할 수 있다. 다수의 메모리 뱅크(BK0 - BKm) 각각은 다수의 워드라인(WL), 비트라인(BL) 및 메모리 셀(MC)을 포함할 수 있다. 도 1에서는 도시의 편의를 위해 메모리 뱅크(BK0)의 내부에만 일부 구성을 도시하였다.The memory device 130 may store the data transferred through the bus interface 121 or output the stored data according to a request transmitted from the memory controller 120. [ The memory device 130 may include a plurality of memory banks (BK0 - BKm, where m is a natural number) for storing data. Each of the plurality of memory banks BK0 to BKm may include a plurality of word lines WL, bit lines BL and memory cells MC. In FIG. 1, only a part of the structure is shown inside the memory bank BK0 for convenience of illustration.

호스트 장치는 그 종류에 따라 각각 요구하는 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 memory controller 120 considers the characteristics of the host devices, ). ≪ / RTI > For example, a central processing unit may require a low latency, a display unit may require a high bandwidth, a medium latency, and a graphics processing unit may require a high bandwidth. In this case, if the requests transmitted from the different host devices are transmitted to the memory device 130 in the requested order, the operation corresponding to the request may not be efficiently performed.

이와 같이, 서로 다른 호스트 장치로부터 전송된 요청들을 처리하기 위한 방법으로 (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 request scheduler 123 compares 'TIMEOUT', 'PRIORITY', 'ROWHIT', and 'STARVATION' of the requests CMD0 to CMD3 stored in the request queues 122_0 to 122_n, (OUT_CMD) to be finally output.

도 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 memory controller 400 and a peripheral configuration in a system according to an embodiment of the present invention.

도 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 memory controller 400, and a memory device (MEMORY). The memory controller 400 may include a plurality of request queues 410_0-410_n, a token information generator 420, a request scheduler 430 and a bus interface 440. [

다수의 호스트 장치(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 controller 400 or receive data transmitted from the memory controller 400 as needed.

메모리 장치(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 bus interface 440 or output the stored data according to the request transmitted from the memory controller 400. [ The memory device MEMORY may include a plurality of memory banks (BK0 - BKm, where m is a natural number) for storing data. Each of the plurality of memory banks BK0 to BKm may include a plurality of word lines (WL, row), bit lines (BL, column) and memory cells MC (see BK0 in Fig. 1).

메모리 콘트롤러(400)는 호스트 장치들(HOST_0 - HOST_n)로부터의 읽기 또는 쓰기 요청을 수신하고 이에 대응하여 메모리 장치(MEMORY)가 요청된 동작을 수행하도록 제어할 수 있다. 이를 위해 메모리 콘트롤러(400)는 다수의 호스트 장치(HOST_0 - HOST_n)로부터 전송된 요청들을 스케줄링하여 메모리 장치(MEMORY)로 출력할 수 있다. 또한 메모리 콘트롤러(400)는 호스트 장치들(HOST_0 - HOST_n)로부터 전송된 데이터를 메모리 장치(MEMORY)로 전달하거나 메모리 장치(MEMORY)로부터 전송된 데이터를 호스트 장치들(HOST_0 - HOST_n)로 전달할 수 있다.The memory controller 400 may receive a read or write request from the host devices HOST_0 to HOST_n and control the memory device MEMORY to perform the requested operation in response thereto. To this end, the memory controller 400 can schedule requests transmitted from a plurality of host devices (HOST_0 to HOST_n) and output them to the memory device (MEMORY). The memory controller 400 may also transfer the data transmitted from the host devices HOST_0 to HOST_n to the memory device MEMORY or may transfer the data transmitted from the memory device MEMORY to the host devices HOST_0 to HOST_n .

다수의 요청 큐(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 information generating unit 420 may generate and output information (TK0-TKn, hereinafter referred to as token information) about the first and second number of tokens corresponding to the host apparatuses HOST_0 to HOST_n, respectively. In the following, the token may be the price used to output the request. For example, one of the one or more tokens assigned to the host device A may need to be consumed to output the request of the host device A. [ The first token and the second token may be used according to another of the above-mentioned rules. When outputting a request using the first token, the request may be output according to the FR-FCFS rules. The second token is a token used after all of the first token is consumed, and the request may be output according to the FR rule when outputting the request using the second 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 token information generator 420 reflects the token information (TK0 - TKn), and when the order of outputting the request of the host device is ended, Can be initialized. Therefore, when the next request queue of the selected request queue is selected, the token information generation unit 420 can initialize the token information (TK0 - TKn) corresponding to the previously selected request queue. That is, if a host device is selected and the requests are output using the first or second token and the next host device is selected, the number of first and second tokens of the previously selected host device may be returned to the initial state .

다수의 호스트 장치(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 request scheduler 430 repeatedly selects a plurality of request queues 410_0-410_n one by one, and outputs the requests stored in the selected request queue using the first and second tokens, one request per one token And output one request per one of the second tokens if the first token is exhausted. At this time, the request scheduler 430 may preferentially use the first token to output the request, and output the request using the second token only after all of the first token is used.

요청 스케줄러(430)는 제1 또는 제2토큰이 남아있지만 선택된 요청 큐에 더 이상 출력할 요청이 없거나, 제1토큰을 모두 사용한 후 선택된 요청 큐에 저장된 요청들 중 상기 제2토큰을 사용하여 출력할 수 있는 요청이 없는 경우 선택된 요청 큐의 다음 요청 큐를 선택할 수 있다.The request scheduler 430 determines whether the first or second token remains, but there is no request to output to the selected request queue any more, or the first token If there is no request to do so, the next request queue of the selected request queue can be selected.

요청 스케줄러(430)는 제1토큰을 사용하여 요청을 출력하는 경우 FR-FCFS(first-ready, first come-first serve) 규칙에 따라 요청을 순서대로 출력하고, 제2토큰을 사용하여 요청을 출력하는 경우 FR(first-ready) 규칙에 따라 요청을 순서대로 출력할 수 있다. FR-FCFS 규칙 또는 FR 규칙에 따라 요청의 순서를 결정하는 경우 바로 전에 선택된 요청에 대응하는 메모리 장치의 로우 어드레스와의 동일성 여부를 고려할 수 있다. 즉, FR 규칙에 의해 요청을 선택할 때에는 현재 오픈된 상태의 로우에 대응하는 요청인지 여부를 고려하여, 오픈된 상태의 로우에 대응하는 하나 이상의 요청이 존재하는 경우 이러한 요청들 중 먼저 수신된 것부터 출력하고, 존재하지 않은 경우 요청들을 출력하지 않을 수 있다.The request scheduler 430 sequentially outputs requests in accordance with a first-ready (first-come-first-serve) (FR-FCFS) rule when outputting a request using a first token and outputs a request using a second token , The request can be output in order according to the first-ready (FR) rule. When determining the order of the request according to the FR-FCFS rule or the FR rule, it may be considered whether or not it is the same as the row address of the memory device corresponding to the immediately preceding request. That is, when a request is selected by the FR rule, considering whether there is a request corresponding to the row currently opened, if there is more than one request corresponding to the opened row, , And may not print requests if they do not exist.

요청 스케줄러(430)는 다수의 요청 큐 중 요청이 저장되지 않은 요청 큐의 선택을 스킵하고, 다음 요청 큐를 선택할 수 있다. 요청 스케줄러(430)는 라운트 로빈(round robin) 방식에 따라 요청 큐를 선택할 수 있다.The request scheduler 430 may skip the selection of the request queue among the plurality of request queues in which the request is not stored and select the next request queue. The request scheduler 430 may select a request queue according to a round robin scheme.

버스 인터페이스(440)는 호스트 장치들(HOST_0 - HOST_n)로부터 전송된 요청을 대응하는 요청 큐(410_0 - 410_n)들로 전달하고, 다수의 호스트 장치들(HOST_0 - HOST_n)로부터 전송된 데이터를 메모리 장치(MEMORY)로 전달하거나 메모리 장치(MEMORY)로부터 전송된 데이터를 다수의 호스트 장치들(HOST_0 - HOST_n)로 전달할 수 있다.The bus interface 440 communicates the request sent from the host devices HOST_0 through HOST_n to the corresponding request queues 410_0 through 410_n and sends the data sent from the plurality of host devices HOST_0 through HOST_ (MEMORY) or transfer data from the memory device (MEMORY) to a plurality of host devices (HOST_0 to HOST_n).

다수의 호스트 장치(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 memory controller 400 of FIG.

도 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 column address 1.

이하에서는 제1 및 제2호스트 장치(HOST_0, HOST_1)에 대응하는 요청 큐가 번갈아가면서 선택된다고 가정하고, 요청 스케줄러(430)의 스케줄링 동작에 대해 설명할 수 있다. 또한 현재 상태에서 요청 큐(HO, H1)에 저장된 요청들이 모두 출력될 때까지는 호스트 장치들(HOST_0, HOST_1)로부터 요청들이 전송되지 않는다고 가정할 수 있다.Hereinafter, the scheduling operation of the request scheduler 430 may be described on the assumption that the request queues corresponding to the first and second host devices HOST_0 and HOST_1 are alternately selected. It can also be assumed that requests are not sent from the host devices HOST_0 and HOST_1 until all requests stored in the request queues HO and H1 are outputted in the current state.

먼저 요청 큐(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 memory controller 600 repeatedly selects a plurality of request queues (HO, H1), sequentially selects requests stored in the selected request queue according to the FR-FCFS rule using the first token, If you have used all the tokens, you can use the second token to select and output according to the FR rules.

도 6은 본 발명의 일 실시예에 따른 시스템에서 메모리 콘트롤러(600) 및 주변 구성을 나타낸 도면이다. 6 is a diagram illustrating a memory controller 600 and peripheral configuration in a system according to an embodiment of the present invention.

도 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 memory controller 600, and a memory device (MEMORY). The memory controller 600 may include a plurality of request queues 610_0-610_n, a token information generator 620, a request scheduler 630 and a bus interface 640. [

도 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 memory controller 600 of FIG. 6 may basically be similar to the configuration and operation of the memory controller 400 of FIG.

다만 도 6의 메모리 콘트롤러(600)의 요청 스케줄러(630)는 다수의 호스트 장치(HOST_0 - HOST_n) 중 하나 이상의 호스트 장치가 최우선-호스트 장치로 설정된 경우 최우선-호스트 장치로부터 요청이 수신되면, 현재 선택된 요청 큐의 요청들을 출력하는 동작을 중단하고, 최우선-호스트 장치에 대응하는 요청 큐를 선택하여 요청들을 출력할 수 있다.However, the request scheduler 630 of the memory controller 600 of FIG. 6 is configured such that when one or more of the host devices HOST_0 to HOST_n are set as a priority-host device, Interrupt the operation of outputting requests of the request queue, select the request queue corresponding to the priority-first host device, and output the requests.

이를 위해 다수의 요청 큐 중 최우선-호스트 장치에 대응하는 요청 큐는 요청이 수신되면 최우선 신호(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 request scheduler 630 may pause the request output operation that was in progress when the highest priority signal TOP_PRIORITY is active and may resume outputting the request that was paused after first outputting the request received in the request queue corresponding to the highest priority host device have. The priority-first host device can be fixedly or dynamically set as one or more host devices of the plurality of host devices (HOST_0 - HOST_n).

도 7은 도 6의 메모리 콘트롤러(600)의 동작을 설명하기 위한 도면이다.7 is a diagram for explaining the operation of the memory controller 600 of FIG.

도 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 request scheduler 630 may pause the operation of scheduling and outputting the requests of the currently selected request queue and output the requests E1 and E2 sent from the host device HOST_2. The output operation of the interrupted request queue can be resumed (RESUME) when the output of the requests E1 and E2 transmitted from the host device HOST_2 is completed.

도 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 memory controller 800, and a memory device (MEMORY). The memory controller 800 includes a plurality of request queues 810_0 to 810_n, a token information generating unit 820, a request scheduler 830, a bus interface 840, a bandwidth monitoring unit 850 and a bandwidth adjusting unit 860 .

도 8의 시스템에서는 도 4의 시스템과 달리 메모리 콘트롤러(800)가 대역폭 모니터링부(850)를 포함할 수 있다. 도 8의 메모리 콘트롤러(800)의 구성 및 동작은 기본적으로 도 4의 메모리 콘트롤러(400)의 구성 및 동작과 유사할 수 있다. In the system of FIG. 8, the memory controller 800 may include a bandwidth monitoring unit 850, unlike the system of FIG. The configuration and operation of the memory controller 800 of FIG. 8 may be basically similar to the configuration and operation of the memory controller 400 of FIG.

다만 도 8의 메모리 콘트롤러(800)의 대역폭 모니터링부(850)는 다수의 호스트 장치(HOST_0 - HOST_n)와 메모리 콘트롤러(800) 사이의 대역폭을 모니터링할 수 있다. 보다 자세히 살펴보면, 대역폭 모니터링부(850)는 설정된 구간 동안 각 요청 큐(810_0 - 810_n)에 저장된 요청들 중 요청 스케줄러(830)를 통해 출력된 요청들의 개수를 검출하고, 검출된 결과에 기초하여 각 호스트 장치(HOST_0 - HOST_n)에 대한 실제 대역폭을 측정할 수 있다.However, the bandwidth monitoring unit 850 of the memory controller 800 of FIG. 8 can monitor the bandwidth between the plurality of host devices HOST_0 to HOST_n and the memory controller 800. In more detail, the bandwidth monitoring unit 850 detects the number of requests output through the request scheduler 830 among the requests stored in the request queues 810_0 - 810_n during the set intervals, The actual bandwidth for the host device (HOST_0 - HOST_n) can be measured.

대역폭 조절부(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 bandwidth monitoring unit 850 and determines the number of first or second tokens allocated to the host apparatus whose actual bandwidth is smaller than the target bandwidth among the plurality of host apparatuses HOST_0 to HOST_n And increase the number of first or second tokens assigned to host devices whose actual bandwidth is greater than the target bandwidth. The bandwidth control unit 860 controls the bandwidth control unit 860 to reduce the number of the corresponding first or second tokens in the case of a request queue having a smaller number of requests output through the request scheduler 830 during a predetermined interval than the target value 820 and controls the token information generator 820 to increase the number of corresponding first or second tokens in the case of a request queue in which the number of requests outputted through the request scheduler 830 is smaller than the target value for a predetermined interval, Can be controlled.

메모리 콘트롤러는 실제 대역폭과 목표 대역폭을 비교한 결과에 따라 각 호스트 장치에 할당된 토큰의 개수를 조절함으로써 시스템의 효율성을 극대화할 수 있다.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항에 있어서,
상기 토큰 정보 생성부는
상기 선택된 요청 큐의 다음 요청 큐가 선택되면, 이전에 선택된 요청 큐에 대응하는 상기 제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항에 있어서,
상기 요청 스케줄러는
상기 제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항에 있어서,
상기 요청 스케줄러는
상기 제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.
제 4항에 있어서,
상기 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항에 있어서,
상기 다수의 호스트 장치에 할당된 상기 제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.
제 1항에 있어서,
상기 요청 스케줄러는
상기 다수의 호스트 장치 중 하나 이상의 호스트 장치가 최우선-호스트 장치로 설정된 경우 상기 최우선-호스트 장치로부터 요청이 수신되면, 현재 선택된 요청 큐의 요청들을 출력하는 동작을 중단하고, 상기 최우선-호스트 장치에 대응하는 요청 큐를 선택하여 요청들을 출력하는 메모리 콘트롤러.
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.
제 1항에 있어서,
상기 요청 스케줄러는
상기 다수의 요청 큐 중 요청이 저장되지 않은 요청 큐의 선택을 스킵하는 메모리 콘트롤러.
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항에 있어서,
상기 다수의 호스트 장치와 메모리 콘트롤러 사이의 대역폭을 모니터링하는 대역폭 모니터링부; 및
상기 대역폭 모니터링부의 모니터링 결과를 참조하여 상기 토큰 정보 저장부에 저장된 상기 제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.
제 9항에 있어서,
상기 대역폭 조절부는
상기 다수의 호스트 장치 중 실제 대역폭이 목표 대역폭보다 작은 호스트 장치에 할당된 상기 제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.
제 11항에 있어서,
상기 선택된 요청 큐의 다음 요청 큐가 선택되면, 이전에 선택된 요청 큐에 할당된 상기 제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.
제 11항에 있어서,
상기 제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.
제 11항에 있어서,
상기 제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.
제 14항에 있어서,
상기 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.
제 11항에 있어서,
상기 제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.
제 11항에 있어서,
상기 다수의 호스트 장치 중 하나 이상의 호스트 장치가 최우선-호스트 장치로 설정된 경우 상기 최우선-호스트 장치로부터 요청이 수신되면, 현재 선택된 요청 큐의 요청들을 출력하는 동작을 중단하고, 상기 요청 큐를 선택하는 단계에서 상기 최우선-호스트 장치에 대응하는 요청 큐를 선택하는 메모리 콘트롤러의 요청 스케줄링 방법.
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.
제 11항에 있어서,
상기 요청 큐를 선택하는 단계에서
상기 다수의 요청 큐를 반복하여 설정된 순서로 선택하되, 상기 요청이 저장되지 않은 요청 큐의 선택을 스킵하는 메모리 콘트롤러의 요청 스케줄링 방법.
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.
제 11항에 있어서,
상기 다수의 호스트 장치와 메모리 콘트롤러 사이의 대역폭을 모니터링하는 단계
를 더 포함하는 메모리 콘트롤러의 요청 스케줄링 방법.
12. The method of claim 11,
Monitoring the bandwidth between the plurality of host devices and the memory controller
Further comprising the steps of:
제 19항에 있어서,
상기 제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.
KR1020170003473A 2016-02-25 2017-01-10 Memory controller and request scheduling method using the same KR20170100414A (en)

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)

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