KR20230125706A - Memory system including memory device and memory controller and operating method thereof - Google Patents

Memory system including memory device and memory controller and operating method thereof Download PDF

Info

Publication number
KR20230125706A
KR20230125706A KR1020220068915A KR20220068915A KR20230125706A KR 20230125706 A KR20230125706 A KR 20230125706A KR 1020220068915 A KR1020220068915 A KR 1020220068915A KR 20220068915 A KR20220068915 A KR 20220068915A KR 20230125706 A KR20230125706 A KR 20230125706A
Authority
KR
South Korea
Prior art keywords
requests
read
write
request
memory
Prior art date
Application number
KR1020220068915A
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 US18/150,626 priority Critical patent/US20230266893A1/en
Priority to CN202310181431.1A priority patent/CN116627317A/en
Priority to EP23157816.2A priority patent/EP4231162A1/en
Publication of KR20230125706A publication Critical patent/KR20230125706A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

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

Abstract

본 발명에 따른 메모리 시스템은, 복수의 뱅크 단위로 구분되는 메모리 셀 어레이를 포함하는 메모리 장치, 및 상기 메모리 셀 어레이에 포함된 메모리 뱅크들에 데이터를 입출력하기 위해 읽기 요청들 또는 쓰기 요청들을 상기 메모리 장치로 전달하고, 읽기-쓰기 스위칭 포인트를 기점으로 상기 읽기 요청들을 상기 쓰기 요청들과 구분하여 전달하는 메모리 컨트롤러를 포함할 수 있다. 상기 메모리 컨트롤러는, 상기 읽기 요청들 또는 상기 쓰기 요청들을 포함하는 입출력 요청들의 현재 턴에 있어서, 상기 입출력 요청들 중 상기 현재 턴에서 처리된 입출력 요청들의 수에 기초하여 상기 읽기-쓰기 스위칭 포인트 이전에 근접 스위칭 포인트를 설정하고, 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서 상기 현재 턴에서 스케줄링 예정인 적어도 하나의 제1 예비 입출력 요청을 위해 상기 메모리 뱅크들의 상태를 전환하는 적어도 하나의 제1 뱅크 요청이 스케줄링 되는 것을 차단하고, 상기 읽기-쓰기 스위칭 포인트 이후에 다음 턴에서 스케줄링 예정인 제2 예비 입출력 요청들을 위해 상기 메모리 뱅크들의 상태를 전환하는 제2 뱅크 요청들 중 적어도 하나가 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에 스케줄링 되도록 제어할 수 있다.A memory system according to the present invention provides a memory device including a memory cell array divided into a plurality of banks, and read requests or write requests for inputting/outputting data to and from memory banks included in the memory cell array. and a memory controller that transfers the read requests to a device and distinguishes the read requests from the write requests based on a read-write switching point. In a current turn of I/O requests including the read requests or the write requests, the memory controller performs a read-write switching point based on the number of I/O requests processed in the current turn among the I/O requests. at least one first bank that sets a proximity switching point and switches states of the memory banks for at least one first preliminary I/O request scheduled to be scheduled in the current turn between the proximity switching point and the read-write switching point; At least one of the second bank requests that blocks a request from being scheduled and switches the state of the memory banks for second reserve I/O requests scheduled to be scheduled in a next turn after the read-write switching point, with the proximate switching point It can be controlled to be scheduled between the read-write switching points.

Figure P1020220068915
Figure P1020220068915

Description

메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 그것의 동작 방법{Memory system including memory device and memory controller and operating method thereof}Memory system including memory device and memory controller and operating method thereof

본 발명은 메모리 컨트롤러에 관한 것으로, 더욱 상세하게는 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 그것의 동작 방법에 관한 것이다.The present invention relates to a memory controller, and more particularly, to a memory system including a memory device and a memory controller and an operation method thereof.

반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치(Volatile semiconductor memory device)와 불휘발성 반도체 메모리 장치(Non-volatile semiconductor memory device)로 구분될 수 있다. 휘발성 반도체 메모리 장치는 읽고 쓰는 속도가 빠르지만 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에, 불휘발성 반도체 메모리 장치는 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 반도체 메모리 장치는 전원의 공급 여부에 관계없이 보존되어야 할 내용을 저장하는 데 쓰인다.Semiconductor memory devices can be largely classified into volatile semiconductor memory devices and non-volatile semiconductor memory devices. A volatile semiconductor memory device has a high read/write speed, but has a disadvantage in that stored contents disappear when power supply is cut off. On the other hand, a nonvolatile semiconductor memory device retains its contents even if power supply is interrupted. Therefore, nonvolatile semiconductor memory devices are used to store contents to be preserved regardless of whether power is supplied or not.

휘발성 반도체 메모리 장치를 포함하는 메모리 시스템은 메모리 컨트롤러를 통해 휘발성 반도체 메모리 장치를 제어할 수 있다. 메모리 컨트롤러는 휘발성 반도체 메모리 장치에 데이터를 입출력하기 위해 다양한 커맨드를 휘발성 반도체 메모리 장치를 전달할 수 있다. 메모리 컨트롤러는 데이터의 입출력이 효율적으로 이루어지도록 다양한 커맨드의 전송 순서를 미리 스케줄링할 수 있다. 다만, 다양한 커맨드의 스케줄링 방법에 따라 메모리 시스템의 성능은 영향을 받을 수 있다.A memory system including a volatile semiconductor memory device may control the volatile semiconductor memory device through a memory controller. The memory controller may transmit various commands to the volatile semiconductor memory device to input/output data into the volatile semiconductor memory device. The memory controller may pre-schedule a transmission sequence of various commands so that data input/output is performed efficiently. However, the performance of the memory system may be affected by various command scheduling methods.

미국 등록특허공보 US 11,221,798 (2022-01-11)US Registered Patent Publication US 11,221,798 (2022-01-11)

본 발명은 상술한 과제를 해결하기 위한 것으로서, 본 발명의 목적은 읽기-쓰기 스위칭 포인트를 통해 읽기 요청들과 쓰기 요청들을 분리하여 전송하고, 읽기-쓰기 스위칭 포인트 이전에 특정 시점 이후에는 현재 턴의 불필요한 뱅크 요청을 스케줄링하는 것을 차단하는 메모리 시스템을 제공하는 데 있다.The present invention is to solve the above problems, and an object of the present invention is to separate and transmit read requests and write requests through a read-write switching point, and after a specific point in time before the read-write switching point, the current turn It is to provide a memory system that blocks unnecessary bank requests from being scheduled.

본 발명의 다른 목적은 현재 턴의 읽기-쓰기 스위칭 포인트 이전에 특정 시점 이후에는 다음 턴의 뱅크 요청을 스케줄링하는 것을 허용하는 메모리 시스템을 제공하는 데 있다.Another object of the present invention is to provide a memory system that allows scheduling of a bank request of a next turn after a specific point in time prior to a read-write switching point of a current turn.

본 발명에 따른 메모리 시스템은, 복수의 뱅크 단위로 구분되는 메모리 셀 어레이를 포함하는 메모리 장치; 및 상기 메모리 셀 어레이에 포함된 메모리 뱅크들에 데이터를 입출력하기 위해 읽기 요청들 또는 쓰기 요청들을 상기 메모리 장치로 전달하고, 읽기-쓰기 스위칭 포인트를 기점으로 상기 읽기 요청들을 상기 쓰기 요청들과 구분하여 전달하는 메모리 컨트롤러를 포함할 수 있다. 상기 메모리 컨트롤러는, 상기 읽기 요청들 또는 상기 쓰기 요청들을 포함하는 입출력 요청들의 현재 턴에 있어서, 상기 입출력 요청들 중 상기 현재 턴에서 처리된 입출력 요청들의 수에 기초하여 상기 읽기-쓰기 스위칭 포인트 이전에 근접 스위칭 포인트를 설정하고, 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서 상기 현재 턴에서 스케줄링 예정인 적어도 하나의 제1 예비 입출력 요청을 위해 상기 메모리 뱅크들의 상태를 전환하는 적어도 하나의 제1 뱅크 요청이 스케줄링 되는 것을 차단하고, 상기 읽기-쓰기 스위칭 포인트 이후에 다음 턴에서 스케줄링 예정인 제2 예비 입출력 요청들을 위해 상기 메모리 뱅크들의 상태를 전환하는 제2 뱅크 요청들 중 적어도 하나가 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에 스케줄링 되도록 제어할 수 있다.A memory system according to the present invention includes a memory device including a memory cell array divided into a plurality of bank units; and transferring read requests or write requests to the memory device to input/output data to memory banks included in the memory cell array, and distinguishing the read requests from the write requests based on a read-write switching point. It may include a memory controller that transmits In a current turn of I/O requests including the read requests or the write requests, the memory controller performs a read-write switching point based on the number of I/O requests processed in the current turn among the I/O requests. at least one first bank that sets a proximity switching point and switches states of the memory banks for at least one first preliminary I/O request scheduled to be scheduled in the current turn between the proximity switching point and the read-write switching point; At least one of the second bank requests that blocks a request from being scheduled and switches the state of the memory banks for second reserve I/O requests scheduled to be scheduled in a next turn after the read-write switching point, with the proximate switching point It can be controlled to be scheduled between the read-write switching points.

또한, 상기 제1 뱅크 요청들 또는 상기 제2 뱅크 요청들은, 상기 메모리 뱅크들 중 하나를 액티브 상태로 전환하는 액티브 요청; 및 상기 메모리 뱅크들 중 액티브 상태인 메모리 뱅크를 스탠바이 상태로 전환하는 프리차지 요청을 포함할 수 있다.In addition, the first bank requests or the second bank requests may include an active request for switching one of the memory banks into an active state; and a precharge request for converting an active memory bank among the memory banks into a standby state.

또한, 상기 메모리 컨트롤러는 상기 현재 턴에서 수행 예정인 입출력 요청들의 최대 요청 개수 또는 지정된 시간에 따라 상기 읽기-쓰기 스위칭 포인트를 설정할 수 있다.Also, the memory controller may set the read-write switching point according to the maximum number of I/O requests scheduled to be performed in the current turn or a specified time.

또한, 상기 메모리 컨트롤러는, 상기 현재 턴에서 스케줄링 예정인 입출력 요청들 중 현재 액티브 상태인 메모리 뱅크들과 뱅크 값 및 열 값이 동일한 페이지-히트 요청들의 수를 획득하고, 상기 최대 요청 개수와 상기 현재 턴에서 처리된 상기 입출력 요청들의 개수의 차이 값을 획득하고, 상기 페이지-히트 요청들의 수가 상기 차이 값보다 작은 경우, 상기 현재 턴에서 처리된 입출력 요청들이 처리 완료된 시점을 상기 근접 스위칭 포인트로 설정할 수 있다.Also, the memory controller obtains the number of page-hit requests having the same bank value and row value as those of memory banks currently in an active state among I/O requests scheduled to be scheduled in the current turn, and determines the maximum number of requests and the current turn A difference value of the number of input/output requests processed in is obtained, and when the number of page-hit requests is less than the difference value, a point in time when the input/output requests processed in the current turn are completed may be set as the proximity switching point. .

또한, 상기 메모리 컨트롤러는, 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서, 상기 현재 턴에 스케줄링 예정된 입출력 요청들 중 현재 액티브 상태인 메모리 뱅크들과 뱅크 값 및 열 값이 다른 입출력 요청을 상기 현재 턴에 스케줄링 하지 않을 수 있다.In addition, the memory controller may, between the proximity switching point and the read-write switching point, among input/output requests scheduled for the current turn, input/output requests having different bank values and column values from memory banks currently in an active state, You may not schedule on the current turn.

또한, 상기 메모리 컨트롤러는, 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서, 상기 현재 턴에 스케줄링 예정된 입출력 요청들 중 현재 액티브 상태인 메모리 뱅크들과 뱅크 값 및 열 값이 동일한 입출력 요청을 상기 현재 턴에 모두 스케줄링 할 수 있다.In addition, the memory controller may, between the proximity switching point and the read-write switching point, input/output requests having the same bank value and row value as memory banks currently active among I/O requests scheduled for the current turn, All can be scheduled during the current turn.

또한, 상기 메모리 컨트롤러는, 호스트로부터 수신되는 상기 읽기 요청들을 저장하는 읽기 요청 큐; 상기 호스트로부터 수신되는 상기 쓰기 요청들을 저장하는 쓰기 요청 큐; 상기 읽기 요청들 또는 상기 쓰기 요청들을 상기 메모리 뱅크들의 상태에 기초하여 상기 현재 턴 또는 상기 다음 턴에 스케줄링하는 읽기-쓰기 스케줄러; 및 상기 읽기-쓰기 스케줄러의 입출력 요청들의 스케줄링에 따라 상기 읽기 요청들, 상기 쓰기 요청들 및 상기 메모리 뱅크들의 상태를 전환하는 뱅크 요청들을 상기 메모리 장치로 전송하는 중재 회로를 포함할 수 있다.The memory controller may further include a read request queue storing the read requests received from the host; a write request queue storing the write requests received from the host; a read-write scheduler that schedules the read requests or the write requests in the current turn or the next turn based on states of the memory banks; and an arbitration circuit that transmits the read requests, the write requests, and bank requests for switching states of the memory banks to the memory device according to the scheduling of the I/O requests of the read-write scheduler.

또한, 상기 읽기 요청 큐 또는 상기 쓰기 요청 큐는 상기 읽기 요청들 또는 상기 쓰기 요청들 각각에 대응하는 뱅크 정보 및 열 정보를 포함하고, 상기 읽기 요청들의 처리 여부를 나타내는 유효 정보를 포함할 수 있다.Also, the read request queue or the write request queue may include bank information and column information corresponding to each of the read requests or the write requests, and may include valid information indicating whether the read requests are processed.

또한, 상기 읽기-쓰기 스케줄러는, 상기 중재 회로에 의해 상기 읽기 요청들 또는 상기 쓰기 요청들 중 하나가 상기 메모리 장치로 전송되면, 상기 읽기 요청 큐 또는 상기 쓰기 요청 큐의 상기 뱅크 정보, 상기 열 정보 및 상기 유효 정보를 갱신하고, 갱신된 정보에 기초하여 상기 근접 스위칭 포인트를 결정할 수 있다.In addition, the read-write scheduler may, when one of the read requests or the write requests is transmitted to the memory device by the arbitration circuit, the bank information and the column information of the read request queue or the write request queue. and updating the valid information, and determining the proximity switching point based on the updated information.

또한, 상기 중재 회로는 상기 읽기-쓰기 스케줄러로부터 수신된 상기 입출력 요청들의 스케줄링에 기초하여 상기 입출력 요청들, 상기 입출력 요청들에 대응하는 액티브 요청들 및 상기 입출력 요청들에 대응하는 프리차지 요청들 순서로 우선순위를 결정할 수 있다.Further, the arbitration circuit may determine the order of the input/output requests, active requests corresponding to the input/output requests, and precharge requests corresponding to the input/output requests based on the scheduling of the input/output requests received from the read-write scheduler. priorities can be determined.

또한, 상기 메모리 컨트롤러는, 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에 스케줄링 된 상기 제2 뱅크 요청들 중 적어도 하나에 대응하는 입출력 요청을 상기 다음 턴에서 가장 먼저 스케줄링 할 수 있다.Also, the memory controller may schedule an input/output request corresponding to at least one of the second bank requests scheduled between the proximity switching point and the read-write switching point first in the next turn.

본 발명에 따른 메모리 시스템은, 복수의 뱅크 단위로 구분되는 메모리 셀 어레이를 포함하는 메모리 장치; 및 상기 메모리 셀 어레이에 포함된 메모리 뱅크들에 데이터를 입출력하기 위해 읽기 요청들 또는 쓰기 요청들을 상기 메모리 장치로 전달하고, 읽기-쓰기 스위칭 포인트를 기점으로 상기 읽기 요청들을 상기 쓰기 요청들과 구분하여 전달하는 메모리 컨트롤러를 포함할 수 있다. 상기 메모리 컨트롤러는, 상기 읽기 요청들 또는 상기 쓰기 요청들을 포함하는 입출력 요청들의 현재 턴에 있어서, 상기 현재 턴에서 처리된 상기 입출력 요청들의 수에 기초하여 상기 읽기-쓰기 스위칭 포인트 이전에 근접 스위칭 포인트를 설정하고, 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서 상기 현재 턴에서 스케줄링 예정인 적어도 하나의 예비 입출력 요청을 위해 상기 메모리 뱅크들 중 하나를 액티브 상태로 전환하는 제1 액티브 요청이 스케줄링 되는 것을 차단하도록 제어할 수 있다.A memory system according to the present invention includes a memory device including a memory cell array divided into a plurality of bank units; and transferring read requests or write requests to the memory device to input/output data to memory banks included in the memory cell array, and distinguishing the read requests from the write requests based on a read-write switching point. It may include a memory controller that transmits The memory controller, in a current turn of I/O requests including the read requests or the write requests, determines a proximity switching point prior to the read-write switching point based on the number of I/O requests processed in the current turn. setting, and that a first active request for switching one of the memory banks into an active state for at least one preliminary I/O request scheduled to be scheduled in the current turn between the proximity switching point and the read-write switching point is scheduled You can control blocking.

또한, 상기 메모리 컨트롤러는, 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서 상기 적어도 하나의 예비 입출력 요청을 위해 상기 메모리 뱅크들 중 액티브 상태인 메모리 뱅크를 스탠바이 상태로 전환하는 제1 프리차지 요청이 스케줄링 되는 것을 허용하도록 제어할 수 있다.In addition, the memory controller may include a first precharge request for switching an active memory bank among the memory banks to a standby state for the at least one preliminary input/output request between the proximity switching point and the read-write switching point. You can control to allow this to be scheduled.

또한, 상기 메모리 컨트롤러는, 상기 입출력 요청들의 다음 턴에 있어서, 상기 제1 액티브 요청에 대응하는 메모리 뱅크와 동일한 뱅크 주소를 가지는 입출력 요청을 위한 제2 액티브 요청 또는 제2 프리차지 요청을 상기 다음 턴에서 가장 먼저 스케줄링 할 수 있다.In addition, in a next turn of the I/O requests, the memory controller sends a second active request or a second precharge request for an I/O request having the same bank address as the memory bank corresponding to the first active request in the next turn. can be scheduled first.

또한, 상기 메모리 컨트롤러는, 상기 입출력 요청들의 다음 턴에 있어서, 상기 제1 프리차지 요청에 대응하는 메모리 뱅크와 동일한 뱅크 주소를 가지는 입출력 요청을 위한 제3 액티브 요청을 상기 제2 액티브 요청 또는 제2 프리차지 요청의 직후에 스케줄링 할 수 있다.Also, in a next turn of the I/O requests, the memory controller converts a third active request for an I/O request having the same bank address as the memory bank corresponding to the first precharge request into the second active request or the second active request. It can be scheduled right after the precharge request.

본 발명에 따른 메모리 시스템의 동작 방법은, 메모리 컨트롤러로부터 메모리 장치로 전송되는 읽기 요청들 또는 쓰기 요청들을 포함하는 입출력 요청들의 현재 턴에 있어서, 상기 현재 턴에서 수행 예정인 입출력 요청들의 최대 요청 개수 또는 지정된 시간에 따라 읽기-쓰기 스위칭 포인트를 설정하는 단계; 상기 입출력 요청들 중 상기 현재 턴에서 처리된 입출력 요청들의 수에 기초하여 상기 읽기-쓰기 스위칭 포인트 이전에 근접 스위칭 포인트를 설정하는 단계; 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서, 상기 현재 턴에서 스케줄링 예정인 적어도 하나의 제1 예비 입출력 요청을 위해 상기 메모리 장치에 포함된 메모리 뱅크들의 상태를 전환하는 적어도 하나의 제1 뱅크 요청이 스케줄링 되는 것을 차단하는 단계; 및 상기 읽기-쓰기 스위칭 포인트 이후에 다음 턴에서 스케줄링 예정인 제2 예비 입출력 요청들을 위해 상기 메모리 뱅크들의 상태를 전환하는 제2 뱅크 요청들 중 적어도 하나를 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에 스케줄링하는 단계를 포함할 수 있다.A method of operating a memory system according to the present invention relates to a maximum number of I/O requests scheduled to be performed in the current turn or a specified number of I/O requests in a current turn including read requests or write requests transmitted from a memory controller to a memory device. setting read-write switching points according to time; setting a proximity switching point before the read-write switching point based on the number of input/output requests processed in the current turn among the input/output requests; At least one first bank request for switching states of memory banks included in the memory device for at least one first preliminary I/O request scheduled to be scheduled in the current turn between the proximity switching point and the read-write switching point Blocking this scheduling; and second bank requests for switching states of the memory banks for second preliminary input/output requests scheduled to be scheduled in a next turn after the read-write switching point, between the proximity switching point and the read-write switching point. It may include the step of scheduling in.

또한, 상기 근접 스위칭 포인트를 설정하는 단계는, 상기 현재 턴에서 스케줄링 예정인 입출력 요청들 중 현재 액티브 상태인 메모리 뱅크들과 뱅크 값 및 열 값이 동일한 페이지-히트 요청들의 수를 획득하는 단계; 상기 최대 요청 개수와 상기 현재 턴에서 처리된 상기 입출력 요청들의 개수의 차이 값을 획득하는 단계; 및 상기 페이지-히트 요청들의 수가 상기 차이 값보다 작은 경우, 상기 현재 턴에서 처리된 입출력 요청들이 처리 완료된 시점을 상기 근접 스위칭 포인트로 설정하는 단계를 포함할 수 있다.The setting of the proximity switching point may include obtaining the number of page-hit requests having the same bank value and column value as memory banks currently active among I/O requests to be scheduled in the current turn; obtaining a difference value between the maximum number of requests and the number of input/output requests processed in the current turn; and if the number of page-hit requests is smaller than the difference value, setting a point in time when input/output requests processed in the current turn are processed as the proximity switching point.

또한, 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서, 상기 현재 턴에 스케줄링 예정된 입출력 요청들 중 현재 액티브 상태인 메모리 뱅크들과 뱅크 값 및 열 값이 다른 입출력 요청을 상기 현재 턴에 스케줄링 하지 않는 단계를 더 포함할 수 있다.In addition, between the proximity switching point and the read-write switching point, among I/O requests scheduled for scheduling in the current turn, I/O requests having different bank values and column values from memory banks currently active are not scheduled in the current turn. Further steps may be included.

또한, 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서, 상기 현재 턴에 스케줄링 예정된 입출력 요청들 중 현재 액티브 상태인 메모리 뱅크들과 뱅크 값 및 열 값이 동일한 입출력 요청을 상기 현재 턴에 모두 스케줄링 하는 단계를 더 포함할 수 있다.In addition, between the proximity switching point and the read-write switching point, among I/O requests scheduled for scheduling in the current turn, all I/O requests having the same bank value and row value as memory banks currently active are scheduled in the current turn. It may further include steps to do.

또한, 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에 스케줄링 된 상기 제2 뱅크 요청들 중 적어도 하나에 대응하는 입출력 요청을 상기 다음 턴에서 가장 먼저 스케줄링 하는 단계를 더 포함할 수 있다.The method may further include scheduling an I/O request corresponding to at least one of the second bank requests scheduled between the proximity switching point and the read-write switching point first in the next turn.

본 발명에 의하면, 현재 턴의 불필요한 뱅크 요청을 차단하여 전력 소비를 감소시킬 수 있다.According to the present invention, it is possible to reduce power consumption by blocking unnecessary bank requests of the current turn.

또한, 본 발명에 의하면, 다음 턴의 뱅크 요청들 중 일부를 현재 턴에 스케줄링하여 읽기-쓰기 전환 시의 레이턴시를 감소시키고, 대역폭을 증가시킬 수 있다.In addition, according to the present invention, some of the bank requests of the next turn may be scheduled in the current turn to reduce latency and increase bandwidth during read-write conversion.

도 1은 일 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는, 도 1의 메모리 컨트롤러의 커맨드 전송 동작을 나타내는 블록도이다.
도 3은, 도 2의 읽기 요청 큐, 쓰기 요청 큐, 읽기 요청 정보, 쓰기 요청 정보 및 뱅크 상태 정보의 일 예를 나타내는 도면이다.
도 4는, 도 3의 정보들의 이용한 도 2의 메모리 컨트롤러의 읽기-쓰기 스케줄링 방법을 나타내는 도면이다.
도 5는, 도 4의 읽기-쓰기 스케줄링 방법을 나타내는 순서도이다.
도 6은, 도 2의 읽기 요청 큐, 쓰기 요청 큐, 읽기 요청 정보, 쓰기 요청 정보 및 뱅크 상태 정보의 다른 예를 나타내는 도면이다.
도 7은, 도 6의 정보들의 이용한 도 2의 메모리 컨트롤러의 읽기-쓰기 스케줄링 방법의 일 예를 나타내는 도면이다.
도 8은, 도 7의 읽기-쓰기 스케줄링 방법을 나타내는 순서도이다.
도 9는, 도 6의 정보들의 이용한 도 2의 메모리 컨트롤러의 읽기-쓰기 스케줄링 방법의 다른 예를 나타내는 도면이다.
도 10은, 도 9의 읽기-쓰기 스케줄링 방법을 나타내는 순서도이다.
도 11은, 도 2의 메모리 컨트롤러의 읽기-쓰기 스케줄링 방법을 나타내는 순서도이다.
도 12는 일 실시 예에 따른 모바일 시스템을 나타내는 도면이다.
1 is a block diagram illustrating a memory system according to an exemplary embodiment.
FIG. 2 is a block diagram illustrating a command transmission operation of the memory controller of FIG. 1 .
FIG. 3 is a diagram illustrating an example of a read request queue, a write request queue, read request information, write request information, and bank status information of FIG. 2 .
FIG. 4 is a diagram illustrating a read-write scheduling method of the memory controller of FIG. 2 using the information of FIG. 3 .
5 is a flowchart illustrating the read-write scheduling method of FIG. 4 .
FIG. 6 is a diagram illustrating another example of the read request queue, write request queue, read request information, write request information, and bank status information of FIG. 2 .
FIG. 7 is a diagram illustrating an example of a read-write scheduling method of the memory controller of FIG. 2 using the information of FIG. 6 .
8 is a flowchart illustrating the read-write scheduling method of FIG. 7 .
FIG. 9 is a diagram illustrating another example of a read-write scheduling method of the memory controller of FIG. 2 using the information of FIG. 6 .
10 is a flowchart illustrating the read-write scheduling method of FIG. 9 .
11 is a flowchart illustrating a read-write scheduling method of the memory controller of FIG. 2 .
12 is a diagram illustrating a mobile system according to an exemplary embodiment.

이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.Hereinafter, embodiments of the present invention will be described clearly and in detail to the extent that those skilled in the art can easily practice the present invention.

또한, 이하에서는, 디램(DRAM)을 본 발명의 특징 및 기능을 설명하기 위한 반도체 메모리 장치의 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.Also, hereinafter, a DRAM will be used as an example of a semiconductor memory device for explaining the features and functions of the present invention. However, those skilled in the art will readily appreciate other advantages and capabilities of the present invention in light of the disclosure herein. The present invention may be implemented or applied through other embodiments. In addition, the detailed description may be modified or changed according to viewpoints and applications without significantly departing from the scope, spirit, and other objectives of the present invention.

도 1은 일 실시 예에 따른 메모리 시스템을 나타내는 블록도이다. 도 1을 참조하면, 본 발명의 메모리 시스템(1000)은 메모리 컨트롤러(1100)와 메모리 장치(1200)를 포함할 수 있다.1 is a block diagram illustrating a memory system according to an exemplary embodiment. Referring to FIG. 1 , a memory system 1000 according to the present invention may include a memory controller 1100 and a memory device 1200 .

일 실시 예에 따르면, 메모리 컨트롤러(1100)는 메모리 장치(1200)에 데이터를 쓰거나, 메모리 장치(1200)에 저장된 데이터를 읽어내는 접근 동작을 수행할 수 있다. 예를 들면, 메모리 컨트롤러(1100)는 메모리 장치(1200)에 데이터를 기입하거나, 메모리 장치(1200)에 저장된 데이터를 독출하기 위한 명령어(CMD)와 어드레스(ADDR)를 생성할 수 있다. 메모리 컨트롤러(1100)는 메모리 장치(1200)를 제어하기 위한 메모리 컨트롤러, 응용 프로세서(Application Processor: AP)와 같은 시스템 온 칩(SoC), 중앙 처리 유닛(Central Processing Unit: CPU), 디지털 신호 프로세서(Digital Signal Processor: DSP), 그래픽 처리 유닛 (Graphics Processing Unit: GPU) 중 적어도 하나일 수 있다.According to an embodiment, the memory controller 1100 may perform an access operation of writing data to the memory device 1200 or reading data stored in the memory device 1200 . For example, the memory controller 1100 may generate a command CMD and an address ADDR for writing data into the memory device 1200 or reading data stored in the memory device 1200 . The memory controller 1100 includes a memory controller for controlling the memory device 1200, a system-on-a-chip (SoC) such as an application processor (AP), a central processing unit (CPU), and a digital signal processor ( It may be at least one of a Digital Signal Processor (DSP) and a Graphics Processing Unit (GPU).

일 실시 예에 따르면, 메모리 컨트롤러(1100)는 각종 신호를 메모리 장치(1200)에 제공함으로써, 메모리 장치(1200)의 전반적인 동작을 제어할 수 있다. 예를 들면, 메모리 컨트롤러(1100)는 읽기(read) 및 쓰기(write) 등과 같은 메모리 장치(1200)의 메모리 액세스 동작을 제어할 수 있다. 메모리 컨트롤러(1100)는 커맨드(CMD) 및 어드레스(ADDR)를 메모리 장치(1200)에 제공함으로써, 메모리 장치(1200)에 데이터(DATA)를 기입하거나, 또는 메모리 장치(1200)로부터 데이터(DATA)를 독출할 수 있다. 또한, 메모리 컨트롤러(1100)는 메모리 장치(1200)에 클럭 신호(CLK)를 더 제공할 수 있다.According to an embodiment, the memory controller 1100 may control overall operations of the memory device 1200 by providing various signals to the memory device 1200 . For example, the memory controller 1100 may control memory access operations of the memory device 1200 such as read and write. The memory controller 1100 provides the command CMD and the address ADDR to the memory device 1200 to write data DATA into the memory device 1200 or to write data DATA from the memory device 1200. can be read. Also, the memory controller 1100 may further provide a clock signal CLK to the memory device 1200 .

일 실시 예에 따르면, 메모리 컨트롤러(1100)는 메모리 장치(1200)를 제어하기 위해 다양한 종류의 커맨드(CMD)들을 생성할 수 있다. 예를 들면, 메모리 컨트롤러(1100)는 데이터(DATA)의 읽기 또는 쓰기를 위해 메모리 코어(1210)에 포함된 메모리 뱅크들의 상태를 전환하는 뱅크 동작에 대응하는 뱅크 요청(bank request)을 생성할 수 있다. 일 예로, 뱅크 요청은 메모리 코어(1210)에 포함된 메모리 뱅크들의 상태를 액티브 상태(active state)로 전환하기 위한 액티브 요청(active request)을 포함할 수 있다. 메모리 장치(1200)는 액티브 요청에 응답하여, 메모리 뱅크들에 포함된 열(row), 즉, 워드 라인(word line)을 활성화시킬 수 있다. 뱅크 요청은 데이터(DATA)의 읽기 또는 쓰기가 완료된 후 메모리 뱅크들을 액티브 상태에서 스탠바이 상태(standby state)로 전환하기 위한 프리차지 요청(precharge request)을 포함할 수 있다. 또한, 메모리 컨트롤러(1100)는 메모리 장치(1200)에서 데이터(DATA)의 읽기 동작 또는 쓰기 동작을 수행하는 입출력 요청(I/O request)(예: CAS request)을 생성할 수 있다. 일 예로, 입출력 요청은 활성화된 메모리 뱅크들에서 데이터(DATA)를 독출하기 위한 읽기 요청(read request)을 포함할 수 있다. 입출력 요청은 활성화된 메모리 뱅크들에 데이터(DATA)를 기입하기 위한 쓰기 요청(write request)을 포함할 수 있다. 또한, 메모리 컨트롤러(1100)는 메모리 뱅크들에 대한 리프레쉬 동작을 제어하기 위한 리프레쉬 요청을 생성할 수 있다. 다만, 여기에서 설명된 커맨드(CMD)의 종류는 예시적인 것이며, 다른 종류의 커맨드(CMD)가 존재할 수 있다.According to an embodiment, the memory controller 1100 may generate various types of commands CMD to control the memory device 1200 . For example, the memory controller 1100 may generate a bank request corresponding to a bank operation of changing states of memory banks included in the memory core 1210 to read or write data DATA. there is. For example, the bank request may include an active request for changing the state of memory banks included in the memory core 1210 to an active state. The memory device 1200 may activate a row included in the memory banks, that is, a word line, in response to an activation request. The bank request may include a precharge request for converting the memory banks from an active state to a standby state after reading or writing of data is completed. Also, the memory controller 1100 may generate an I/O request (eg, CAS request) for performing a read or write operation of data DATA in the memory device 1200 . For example, the input/output request may include a read request for reading data DATA from activated memory banks. The input/output request may include a write request for writing data DATA in activated memory banks. Also, the memory controller 1100 may generate a refresh request for controlling a refresh operation of memory banks. However, the type of command CMD described here is exemplary, and other types of commands CMD may exist.

일 실시 예에 따르면, 메모리 컨트롤러(1100)는 메모리 장치(1200)로 전송되는 커맨드(CMD)들의 순서를 결정할 수 있다. 메모리 컨트롤러(1100)는 읽기-쓰기 스케줄러(1110)를 포함할 수 있다. 예를 들면, 읽기-쓰기 스케줄러(1110)는 메모리 장치(1200)로 전송되는 뱅크 요청(예: 액티브 요청 및 프리차지 요청) 및 입출력 요청(예: 읽기 요청 및 쓰기 요청)의 전송 순서를 결정할 수 있다. 뱅크 요청은 읽기 요청에 대응하는 뱅크 요청 또는 쓰기 요청에 대응하는 뱅크 요청을 포함할 수 있다. 읽기-쓰기 스케줄러(1110)는 읽기 요청과 쓰기 요청이 분리되어 전송되도록 스케줄링 할 수 있다. 읽기-쓰기 스케줄러(1110)는 지정된 단위(예: 지정된 요청들의 수 또는 지정된 시간)에 따라 턴을 정하여 일정량의 읽기 요청들 또는 쓰기 요청들이 전송되도록 스케줄링 할 수 있다.According to an embodiment, the memory controller 1100 may determine the order of commands CMD transmitted to the memory device 1200 . The memory controller 1100 may include a read-write scheduler 1110 . For example, the read-write scheduler 1110 may determine the transmission order of bank requests (eg, active requests and precharge requests) and I/O requests (eg, read requests and write requests) transmitted to the memory device 1200 . there is. The bank request may include a bank request corresponding to a read request or a bank request corresponding to a write request. The read-write scheduler 1110 may schedule a read request and a write request to be transmitted separately. The read-write scheduler 1110 may schedule a certain amount of read requests or write requests to be transmitted by determining a turn according to a specified unit (eg, a specified number of requests or a specified time).

일 실시 예에 따르면, 메모리 장치(1200)는 메모리 컨트롤러(1100)에 의해 읽기 요청된 데이터(DATA)를 메모리 컨트롤러(1100) 측으로 출력하거나, 메모리 컨트롤러(1100)에 의해 쓰기 요청된 데이터(DATA)를 메모리 셀에 저장할 수 있다. 메모리 장치(1200)는 커맨드(CMD), 어드레스(ADDR) 및 클럭 신호(CLK)에 기초하여 데이터(DATA)를 입출력할 수 있다. 메모리 장치(1200)는 메모리 코어(1210) 및 제어 로직(1220)을 포함할 수 있다.According to an embodiment, the memory device 1200 outputs data DATA requested by the memory controller 1100 to the memory controller 1100 or writes data DATA requested by the memory controller 1100 to the memory controller 1100. can be stored in a memory cell. The memory device 1200 may input/output data DATA based on the command CMD, the address ADDR, and the clock signal CLK. The memory device 1200 may include a memory core 1210 and a control logic 1220 .

여기서, 메모리 장치(1200)는 DRAM(Dynamic Random Access Memory), SDRAM(Synchronous Dynamic Random Access Memory), DDR(Double Data Rate) DRAM, DDR SDRAM, LPDDR(Low Power Double Data Rate) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, RDRAM(Rambus Dynamic Random Access Memory), 정적 랜덤 액세스 메모리(SRAM) 등과 같은 휘발성 메모리 장치일 수도 있다. 또는, 메모리 장치(1200)는 저항성 램(RRAM), 상변화 메모리(PRAM), 자기저항 메모리(MRAM), 강유전체 메모리(FRAM), 스핀주입 자화반전 메모리(STT-RAM) 등과 같은 비휘발성 메모리 장치에서도 구현될 수도 있다. 본 명세서에서는 디램을 기준으로 본 발명의 이점이 설명되었으나, 본 개시의 기술적 사상은 이에 제한되지 않는다.Here, the memory device 1200 includes Dynamic Random Access Memory (DRAM), Synchronous Dynamic Random Access Memory (SDRAM), Double Data Rate (DDR) DRAM, DDR SDRAM, Low Power Double Data Rate (LPDDR) SDRAM, and Graphics Double Data Rate (GDDR). It may also be a volatile memory device such as Data Rate SDRAM, Rambus Dynamic Random Access Memory (RDRAM), Static Random Access Memory (SRAM), and the like. Alternatively, the memory device 1200 may be a nonvolatile memory device such as a resistive RAM (RRAM), a phase change memory (PRAM), a magnetoresistive memory (MRAM), a ferroelectric memory (FRAM), a spin injection magnetization reversal memory (STT-RAM), and the like. may also be implemented. In this specification, the advantages of the present invention are described based on DRAM, but the technical spirit of the present disclosure is not limited thereto.

일 실시 예에 따르면, 메모리 코어(1210)는 뱅크 단위로 구분되는 메모리 셀 어레이와 로우 디코더, 칼럼 디코더, 감지 증폭기, 기입 드라이버 등을 포함할 수 있다. 메모리 코어(1210)는 메모리 장치(1200)에 쓰기 요청되는 데이터(DATA)를 기입 드라이버를 통해 저장하고, 읽기 요청되는 데이터를 감지 증폭기를 사용하여 독출할 수 있다. 더불어, 셀 어레이에 데이터를 저장 및 유지하기 위한 리프레쉬(Refresh) 동작을 위한 구성이나 어드레스에 따른 선택 회로들이 더 포함될 수 있을 것이다. 하지만, 본 발명은 메모리 코어(1210)에 관련된 기술 사항은 아니기 때문에 이들 구성들에 대한 설명은 생략하기로 한다.According to an embodiment, the memory core 1210 may include a memory cell array divided into banks, a row decoder, a column decoder, a sense amplifier, a write driver, and the like. The memory core 1210 may store data DATA requested to be written to the memory device 1200 through a write driver and read data requested to be read using a sense amplifier. In addition, selection circuits according to a configuration or address for a refresh operation for storing and maintaining data in the cell array may be further included. However, since the present invention is not a technical matter related to the memory core 1210, a description of these components will be omitted.

일 실시 예에 따르면, 제어 로직(1220)은 메모리 컨트롤러(1100)로부터 명령어(CMD) 및 어드레스(ADDR)와 같은 제어신호 및 클럭 신호(CLK)를 제공받을 수 있다. 제어 로직(1220)은 제어신호 및 클럭 신호(CLK)를 이용하여, 메모리 장치(1200)의 쓰기, 읽기 또는 삭제 등의 동작을 제어할 수 있다.According to an embodiment, the control logic 1220 may receive a control signal such as a command CMD and an address ADDR and a clock signal CLK from the memory controller 1100 . The control logic 1220 may control operations such as writing, reading, or erasing of the memory device 1200 using a control signal and a clock signal CLK.

일 실시 예에 따르면, 메모리 장치(1200)는 메모리 컨트롤러(1100)로부터 수신된 뱅크 요청(예: 액티브 요청 또는 프리차지 요청) 및 입출력 요청(예: 읽기 요청 또는 쓰기 요청)에 기초하여 메모리 코어(1210)의 메모리 뱅크들을 제어할 수 있다. 예를 들면, 메모리 장치(1200)는 액티브 요청에 응답하여 선택된 메모리 뱅크와 열(row)을 활성화할 수 있다. 메모리 장치(1200)는 읽기 요청에 응답하여 활성화된 메모리 뱅크 및 열의 데이터(DATA)를 출력(또는 독출)할 수 있다. 메모리 장치(1200)는 쓰기 요청에 응답하여 활성화된 메모리 뱅크 및 열에 데이터(DATA)를 입력(또는 저장)할 수 있다. 메모리 장치(1200)는 프리차지 요청에 응답하여 활성화된 메모리 뱅크 및 열을 스탠바이 상태(standby state)로 전환할 수 있다.According to an embodiment, the memory device 1200 operates a memory core (eg, a read request or a write request) based on a bank request (eg, an active request or a precharge request) and an I/O request (eg, a read request or a write request) received from the memory controller 1100 . The memory banks of 1210) may be controlled. For example, the memory device 1200 may activate a selected memory bank and row in response to an activation request. The memory device 1200 may output (or read) data DATA of an activated memory bank and column in response to a read request. The memory device 1200 may input (or store) data DATA in activated memory banks and columns in response to a write request. The memory device 1200 may switch activated memory banks and columns to a standby state in response to a precharge request.

도 2는, 도 1의 메모리 컨트롤러의 커맨드 전송 동작을 나타내는 블록도이다. 도 2를 참조하면, 메모리 컨트롤러(1100)는 읽기-쓰기 스케줄러(1110), 읽기 요청 큐(1120), 쓰기 요청 큐(1130) 및 중재 회로(1140)를 포함할 수 있다. 메모리 장치(1200)는 메모리 코어(1210)를 포함하고, 메모리 코어(1210)는 복수의 메모리 뱅크를 포함할 수 있다. 일 예로, 복수의 메모리 뱅크는 제1 뱅크(1211), 제2 뱅크(1212), 제3 뱅크(1213) 및 제4 뱅크(1214)를 포함할 수 있다. 이하에서, 메모리 컨트롤러(1100)는 제1 뱅크(1211), 제2 뱅크(1212), 제3 뱅크(1213) 및 제4 뱅크(1214)에 대하여 뱅크 요청(예: 액티브 요청(ACT), 프리차지 요청(PRE)) 또는 입출력 요청(예: 읽기 요청(RD), 쓰기 요청(WR))을 전송하는 것으로 설명될 것이다. 다만, 이는 예시적인 것으로, 메모리 장치(1200)는 적어도 하나 이상의 메모리 뱅크를 포함할 수 있다.FIG. 2 is a block diagram illustrating a command transmission operation of the memory controller of FIG. 1 . Referring to FIG. 2 , the memory controller 1100 may include a read-write scheduler 1110, a read request queue 1120, a write request queue 1130, and an arbitration circuit 1140. The memory device 1200 includes a memory core 1210, and the memory core 1210 may include a plurality of memory banks. For example, the plurality of memory banks may include a first bank 1211 , a second bank 1212 , a third bank 1213 , and a fourth bank 1214 . Hereinafter, the memory controller 1100 performs a bank request (eg, active request (ACT), free It will be described as transmitting a charge request (PRE)) or an input/output request (eg, read request (RD), write request (WR)). However, this is just an example, and the memory device 1200 may include at least one or more memory banks.

일 실시 예에 따르면, 읽기-쓰기 스케줄러(1110)는 메모리 장치(1200)로 전송되는 뱅크 요청 또는 입출력 요청을 스케줄링 할 수 있다. 예를 들면, 읽기-쓰기 스케줄러(1110)는 읽기 요청 정보(1111), 쓰기 요청 정보(1112) 및 뱅크 상태 정보(1113)를 획득할 수 있다. 읽기 요청 정보(1111)는 읽기 요청(RD)에 관한 정보(예: max burst, current burst, page-hit된 요청들의 수)를 포함할 수 있다. 쓰기 요청 정보(1112)는 쓰기 요청(WR)에 관한 정보(예: max burst, current burst, page-hit된 요청들의 수)를 포함할 수 있다. 뱅크 상태 정보(1113)는 현재 활성화된 뱅크의 정보를 포함할 수 있다. 또한, 읽기-쓰기 스케줄러(1110)는 읽기 요청 큐(1120) 또는 쓰기 요청 큐(1130)에 현재 저장된 요청들의 정보 및 읽기 요청 큐(1120) 또는 쓰기 요청 큐(1130)에 저장된 요청들의 처리 정보를 획득할 수 있다.According to an embodiment, the read-write scheduler 1110 may schedule a bank request or an input/output request transmitted to the memory device 1200 . For example, the read-write scheduler 1110 may obtain read request information 1111 , write request information 1112 , and bank status information 1113 . The read request information 1111 may include information about the read request RD (eg, max burst, current burst, number of page-hit requests). The write request information 1112 may include information about the write request (WR) (eg, max burst, current burst, number of page-hit requests). The bank state information 1113 may include information on a currently activated bank. In addition, the read-write scheduler 1110 provides information on requests currently stored in the read request queue 1120 or write request queue 1130 and processing information on requests stored in the read request queue 1120 or write request queue 1130. can be obtained

일 실시 예에 따르면, 읽기-쓰기 스케줄러(1110)는 읽기 요청과 쓰기 요청이 분리되어 전송되도록 스케줄링 할 수 있다. 예를 들면, 읽기-쓰기 스케줄러(1110)는 지정된 단위(예: 지정된 요청들의 수 또는 지정된 시간)에 따라 턴을 정하여 일정량의 읽기 요청들 또는 쓰기 요청들이 전송되도록 스케줄링 할 수 있다. 일 예로, 읽기-쓰기 스케줄러(1110)는 읽기 요청들이 수행되는 턴과 쓰기 요청들이 수행되는 턴이 전환되는 읽기-쓰기 스위칭 포인트를 설정할 수 있다. 읽기-쓰기 스케줄러(1110)는 읽기 턴 또는 쓰기 턴에서 수행되는 요청들의 개수에 기초하여 읽기-쓰기 스위칭 포인트를 설정할 수 있다. 또는 읽기-쓰기 스케줄러(1110)는 읽기 턴 또는 쓰기 턴이 수행되는 시간에 기초하여 읽기-쓰기 스위칭 포인트를 설정할 수 있다.According to an embodiment, the read-write scheduler 1110 may schedule a read request and a write request to be transmitted separately. For example, the read-write scheduler 1110 may schedule a certain amount of read requests or write requests to be transmitted by determining a turn according to a specified unit (eg, a specified number of requests or a specified time). For example, the read-write scheduler 1110 may set a read-write switching point at which a turn in which read requests are performed and a turn in which write requests are performed are switched. The read-write scheduler 1110 may set a read-write switching point based on the number of requests performed in a read turn or a write turn. Alternatively, the read-write scheduler 1110 may set a read-write switching point based on a time at which a read turn or a write turn is performed.

일 실시 예에 따르면, 읽기 요청 큐(1120)는 호스트(미도시)로부터 수신되는 읽기 요청 정보를 관리할 수 있다. 예를 들면, 읽기 요청 큐(1120)는 읽기 요청(RD)들을 저장할 수 있다. 읽기 요청 큐(1120)는 읽기 요청(RD)들의 어드레스(ADDR)(예: 뱅크 및 열)를 저장할 수 있다. 읽기 요청 큐(1120)는 읽기 요청(RD)들의 유효 정보를 저장할 수 있다. 읽기 요청 큐(1120)는 읽기 요청(RD)들 중 하나를 선택적으로 출력할 수 있다. 읽기 요청 큐(1120)는 현재 전송 가능한 읽기 요청(RD)의 정보를 읽기-쓰기 스케줄러(1110)로 제공할 수 있다. 읽기 요청 큐(1120)는 지정된 크기를 가질 수 있다. 읽기 요청 큐(1120)는 새롭게 수신된 읽기 요청(RD)을 빈 공간에 저장하거나 무효 처리된 이전 읽기 요청(RD) 위에 덮어쓸 수 있다.According to an embodiment, the read request queue 1120 may manage read request information received from a host (not shown). For example, the read request queue 1120 may store read requests (RDs). The read request queue 1120 may store addresses ADDR (eg, banks and columns) of read requests RDs. The read request queue 1120 may store valid information of read requests (RDs). The read request queue 1120 may selectively output one of the read requests (RDs). The read request queue 1120 may provide information on read requests (RDs) currently transmittable to the read-write scheduler 1110 . The read request queue 1120 may have a specified size. The read request queue 1120 may store a newly received read request (RD) in an empty space or overwrite a previous read request (RD) that has been invalidated.

일 실시 예에 따르면, 쓰기 요청 큐(1130)는 호스트(미도시)로부터 수신되는 쓰기 요청 정보를 관리할 수 있다. 예를 들면, 쓰기 요청 큐(1130)는 쓰기 요청(WR)들을 저장할 수 있다. 쓰기 요청 큐(1130)는 쓰기 요청(WR)들의 어드레스(ADDR)(예: 뱅크 및 열)를 저장할 수 있다. 쓰기 요청 큐(1130)는 쓰기 요청(WR)들의 유효 정보를 저장할 수 있다. 쓰기 요청 큐(1130)는 쓰기 요청(WR)들 중 하나를 선택적으로 출력할 수 있다. 쓰기 요청 큐(1130)는 현재 전송 가능한 쓰기 요청(WR)의 정보를 읽기-쓰기 스케줄러(1110)로 제공할 수 있다. 쓰기 요청 큐(1130)는 지정된 크기를 가질 수 있다. 쓰기 요청 큐(1130)는 새롭게 수신된 쓰기 요청(WR)을 빈 공간에 저장하거나 무효 처리된 이전 쓰기 요청(WR) 위에 덮어쓸 수 있다.According to an embodiment, the write request queue 1130 may manage write request information received from a host (not shown). For example, the write request queue 1130 may store write requests (WRs). The write request queue 1130 may store addresses ADDR (eg, banks and columns) of write requests WRs. The write request queue 1130 may store valid information of write requests (WRs). The write request queue 1130 may selectively output one of the write requests WRs. The write request queue 1130 may provide information on write requests (WRs) currently transmittable to the read-write scheduler 1110 . The write request queue 1130 may have a specified size. The write request queue 1130 may store a newly received write request (WR) in an empty space or overwrite a previous write request (WR) that has been invalidated.

일 실시 예에 따르면, 중재 회로(1140)는 읽기-쓰기 스케줄러(1110)의 제어에 따라 커맨드(CMD)들을 메모리 장치(1200)로 전송할 수 있다. 예를 들면, 중재 회로(1140)는 읽기 턴에 선택된 뱅크에 대응하는 액티브 요청(ACT)을 전송할 수 있다. 중재 회로(1140)는 액티브 요청(ACT)에 대응하는 읽기 요청(RD)을 전송할 수 있다. 중재 회로(1140)는 읽기 요청(RD)이 처리되고, 읽기 요청(RD)이 처리된 뱅크에 대응하는 프리차지 요청(PRE)을 전송할 수 있다. 또한, 중재 회로(1140)는 쓰기 턴에 선택된 뱅크에 대응하는 액티브 요청(ACT)을 전송할 수 있다. 중재 회로(1140)는 액티브 요청(ACT)에 대응하는 쓰기 요청(WR)을 전송할 수 있다. 중재 회로(1140)는 쓰기 요청(WR)이 처리되고, 쓰기 요청(WR)이 처리된 뱅크에 대응하는 프리차지 요청(PRE)을 전송할 수 있다. 중재 회로(1140)는 읽기-쓰기 스케줄러(1110)와 별도로 존재하거나 읽기-쓰기 스케줄러(1110)의 내부에 포함되어 존재할 수 있다.According to an embodiment, the arbitration circuit 1140 may transmit commands CMD to the memory device 1200 under the control of the read-write scheduler 1110 . For example, the arbitration circuit 1140 may transmit an active request (ACT) corresponding to the selected bank in a read turn. The arbitration circuit 1140 may transmit a read request RD corresponding to the active request ACT. The arbitration circuit 1140 may process the read request RD and transmit the precharge request PRE corresponding to the bank in which the read request RD has been processed. Also, the arbitration circuit 1140 may transmit an active request ACT corresponding to the selected bank in the write turn. The arbitration circuit 1140 may transmit a write request WR corresponding to the active request ACT. The arbitration circuit 1140 may process the write request WR and transmit the precharge request PRE corresponding to the bank in which the write request WR has been processed. The arbitration circuit 1140 may exist separately from the read-write scheduler 1110 or be included in the read-write scheduler 1110.

도 3은, 도 2의 읽기 요청 큐, 쓰기 요청 큐, 읽기 요청 정보, 쓰기 요청 정보 및 뱅크 상태 정보의 일 예를 나타내는 도면이다. 도 3을 참조하면, 읽기 요청 큐(1120) 및 쓰기 요청 큐(1130) 각각은 9개의 요청들을 저장할 수 있다. 다만, 이는 예시적인 것으로, 읽기 요청 큐 및 쓰기 요청 큐 각각은 적어도 하나 이상의 요청들을 저장할 수 있다.FIG. 3 is a diagram illustrating an example of a read request queue, a write request queue, read request information, write request information, and bank status information of FIG. 2 . Referring to FIG. 3 , each of the read request queue 1120 and the write request queue 1130 may store 9 requests. However, this is an example, and each of the read request queue and the write request queue may store at least one or more requests.

일 실시 예에 따르면, 읽기 요청 큐(1120) 및 쓰기 요청 큐(1130)는 입력되는 순서에 따라 요청들을 저장할 수 있다. 읽기 요청 큐(1120) 또는 쓰기 요청 큐(1130)는 읽기 요청(RD) 또는 쓰기 요청(WR)에 관한 정보를 포함할 수 있다. 읽기 요청(RD) 또는 쓰기 요청(WR)에 관한 정보는 읽기 요청(RD) 또는 쓰기 요청(WR)에 대응하는 어드레스(예: 뱅크 값(BANK), 열 값(ROW)) 및 유효 정보(VALID)를 포함할 수 있다. 유효 정보(VALID)는 해당 입출력 요청의 처리 여부(또는 메모리 장치(1200)로 전송 여부)를 표시할 수 있다. 일 예로, 처리된 입출력 요청은 유효 정보(VALID)가 0으로 표시(예: W1, W2, W3, W4)될 수 있다. 아직 처리되지 않은 입출력 요청은 유효 정보(VALID)가 1로 표시(예: R1, R2, R3, R4, W5, W6, W7, W8, W9)될 수 있다.According to an embodiment, the read request queue 1120 and the write request queue 1130 may store requests according to input order. The read request queue 1120 or the write request queue 1130 may include information about a read request (RD) or a write request (WR). Information about the read request (RD) or write request (WR) includes the address corresponding to the read request (RD) or write request (WR) (e.g. bank value (BANK), column value (ROW)) and valid information (VALID ) may be included. The valid information VALID may indicate whether the input/output request is processed (or transmitted to the memory device 1200). For example, the processed input/output request may be displayed as 0 in valid information (VALID) (eg, W1, W2, W3, W4). I/O requests that have not yet been processed may be marked with valid information (VALID) of 1 (eg, R1, R2, R3, R4, W5, W6, W7, W8, W9).

일 실시 예에 따르면, 읽기 요청 정보(1111) 및 쓰기 요청 정보(1112) 각각은 최대 버스트(max burst) 정보 및 버스트(burst) 정보를 포함할 수 있다. 예를 들면, 최대 버스트 정보는 하나의 턴에서 스케줄링 되는 입출력 요청들의 수를 나타낼 수 있다. 버스트 정보는 처리 완료된(또는 메모리 장치(1200)로 전송 완료된) 입출력 요청들의 수를 나타낼 수 있다.According to an embodiment, each of the read request information 1111 and the write request information 1112 may include max burst information and burst information. For example, maximum burst information may indicate the number of I/O requests scheduled in one turn. The burst information may indicate the number of I/O requests that have been processed (or that have been transmitted to the memory device 1200).

일 실시 예에 따르면, 뱅크 상태 정보(1113)는 메모리 장치(1200)의 메모리 뱅크들(1211, 1212, 1213, 1214)의 액티브 상태 정보를 나타낼 수 있다. 예를 들면, 뱅크 상태 정보(1113)는 뱅크 정보(BANK) 및 액티브 상태의 열 정보(ROW)를 포함할 수 있다.According to an embodiment, the bank state information 1113 may indicate active state information of the memory banks 1211 , 1212 , 1213 , and 1214 of the memory device 1200 . For example, the bank status information 1113 may include bank information BANK and column information ROW in an active state.

도 4는, 도 3의 정보들의 이용한 도 2의 메모리 컨트롤러의 읽기-쓰기 스케줄링 방법을 나타내는 도면이다. 도 2 내지 도 4를 참조하면, 메모리 컨트롤러(1100)는 턴을 정하여 읽기 요청(RD)들과 쓰기 요청(WR)들을 구분하여 스케줄링 할 수 있다. 도 4에서는 현재 턴(this turn)이 쓰기 턴으로 설정되고, 다음 턴(next turn)이 읽기 턴으로 설정된 것으로 도시되었다. 다만, 이는 예시적인 것으로, 읽기 턴과 쓰기 턴은 교번하여 반복될 수 있다. 일 예로, 현재 턴이 쓰기 턴이면 다음 턴은 읽기 턴이 되고, 현재 턴이 읽기 턴이면 다음 턴은 쓰기 턴이 될 수 있다.FIG. 4 is a diagram illustrating a read-write scheduling method of the memory controller of FIG. 2 using the information of FIG. 3 . Referring to FIGS. 2 to 4 , the memory controller 1100 may schedule read requests (RDs) and write requests (WRs) by determining a turn. In FIG. 4 , it is shown that the current turn (this turn) is set as the write turn, and the next turn (next turn) is set as the read turn. However, this is exemplary, and the read turn and the write turn may be alternately repeated. For example, if the current turn is a write turn, the next turn may be a read turn, and if the current turn is a read turn, the next turn may be a write turn.

일 실시 예에 따르면, 메모리 컨트롤러(1100)의 읽기-쓰기 스케줄러(1110)는 현재 턴(예: 쓰기 턴)의 요청 큐(예: 쓰기 요청 큐(1130))를 확인할 수 있다. 예를 들면, 현재 쓰기 턴의 시작 시점에, 쓰기 요청 큐(1130)는 제1 쓰기 요청(W1) 내지 제6 쓰기 요청(W6)을 저장하고 있을 수 있다. 이에 읽기-쓰기 스케줄러(1110)는 어드레스(또는 뱅크 값 및 열 값)에 기초하여 제1 쓰기 요청(W1) 내지 제4 쓰기 요청(W4)에 대응하는 액티브 요청들(A11, A21, A31, A41)을 각 메모리 뱅크(BANK1, BANK2, BANK3, BANK4)에 스케줄링 할 수 있다. 서로 다른 뱅크들에 스케줄링 되는 액티브 요청들(A11, A21, A31, A41)은 비교적 짧은 제1 지정된 시간 간격으로 스케줄링 될 수 있다.According to an embodiment, the read-write scheduler 1110 of the memory controller 1100 may check the request queue (eg, the write request queue 1130) of the current turn (eg, the write turn). For example, at the start of the current write turn, the write request queue 1130 may store the first to sixth write requests W1 to W6. Accordingly, the read-write scheduler 1110 generates active requests A11, A21, A31, and A41 corresponding to the first to fourth write requests W1 to W4 based on the addresses (or bank values and column values). ) can be scheduled for each memory bank (BANK1, BANK2, BANK3, BANK4). Active requests A11, A21, A31, and A41 scheduled to different banks may be scheduled at a relatively short first designated time interval.

일 실시 예에 따르면, 읽기-쓰기 스케줄러(1110)는 제1 지정된 시간보다 긴 제2 지정된 시간(예: tRCD)의 경과 후 제1 쓰기 요청(W1) 내지 제4 쓰기 요청(W4)을 각 메모리 뱅크(BANK1, BANK2, BANK3, BANK4)에 스케줄링 할 수 있다. 액티브 요청과 입출력 요청(예: 읽기 요청 또는 쓰기 요청) 사이에는 제2 지정된 시간(예: tRCD) 간격이 필요하다. 제1 쓰기 요청(W1) 내지 제4 쓰기 요청(W4)은 제2 지정된 시간보다 짧은 제3 지정된 시간 간격으로 스케줄링 될 수 있다. 입출력 요청들은 지정된 뱅크와 관계없이 제3 지정된 시간 간격으로 스케줄링 될 수 있다.According to an embodiment, the read-write scheduler 1110 sends the first write request W1 to the fourth write request W4 after a second specified time (eg, tRCD) longer than the first specified time has elapsed, respectively. You can schedule in banks (BANK1, BANK2, BANK3, BANK4). A second designated time interval (eg, tRCD) is required between an active request and an input/output request (eg, a read request or a write request). The first write request W1 to the fourth write request W4 may be scheduled at a third specified time interval shorter than the second specified time. I/O requests may be scheduled at a third specified time interval regardless of a specified bank.

일 실시 예에 따르면, 제2 쓰기 요청(W2)과 제6 쓰기 요청(W6)은 동일한 뱅크(예: bank2)에 다른 열(예: row1, row10)에 지정되어 페이지 충돌(page conflict) 상황이 발생할 수 있다. 이에, 읽기-쓰기 스케줄러(1110)는 제2 쓰기 요청(W2)을 쓰기 동작 후 바로 프리차지 동작을 수행하는 자동 프리차지(auto precharge) 커맨드로 스케줄링 할 수 있다. 따라서, 제2 쓰기 요청(W2) 이후에 프리차지 요청 없이 액티브 요청이 바로 스케줄링 될 수 있다.According to an embodiment, the second write request (W2) and the sixth write request (W6) are assigned to different columns (eg, row1, row10) in the same bank (eg, bank2), resulting in a page conflict situation. can happen Accordingly, the read-write scheduler 1110 may schedule the second write request W2 as an auto precharge command that performs a precharge operation immediately after the write operation. Accordingly, an active request may be immediately scheduled without a precharge request after the second write request W2.

일 실시 예에 따르면, 읽기-쓰기 스케줄러(1110)는 매 요청이 스케줄링 될 때마다 현재 턴(예: 쓰기 턴)의 요청 큐(예: 쓰기 요청 큐(1130))를 확인할 수 있다. 예를 들면, 제4 쓰기 요청(W4)이 스케줄링 된 후 읽기-쓰기 스케줄러(1110)가 쓰기 요청 큐(1130)를 확인할 때, 쓰기 요청 큐(1130)는 제7 쓰기 요청(W7) 내지 제9 쓰기 요청(W9)을 더 저장하고 있을 수 있다. 읽기-쓰기 스케줄러(1110)는 제5 쓰기 요청(W5) 내지 제9 쓰기 요청(W9)의 어드레스에 기초하여 스케줄링 할 수 있다.According to an embodiment, the read-write scheduler 1110 may check a request queue (eg, the write request queue 1130) of a current turn (eg, a write turn) whenever a request is scheduled. For example, when the read-write scheduler 1110 checks the write request queue 1130 after the fourth write request W4 is scheduled, the write request queue 1130 receives the seventh to ninth write requests W7 to 9. It may be storing more write requests (W9). The read-write scheduler 1110 may perform scheduling based on the addresses of the fifth write request W5 to the ninth write request W9.

일 실시 예에 따르면, 읽기-쓰기 스케줄러(1110)는 현재 턴(예: 쓰기 턴)의 요청 정보(예: 읽기 요청 정보(1111) 또는 쓰기 요청 정보(1112))에 기초하여 읽기-쓰기 스위칭 포인트(RW switching point)를 설정할 수 있다. 예를 들면, 쓰기 요청 정보(1112)에서 최대 버스트 정보가 8이므로, 읽기-쓰기 스케줄러(1110)는 제5 쓰기 요청(W5) 내지 제8 쓰기 요청(W8)에 대응하는 스케줄링 후 다음 턴(예: 읽기 턴)을 스케줄링 할 수 있다. 일 예로, 제5 쓰기 요청(W5), 제7 쓰기 요청(W7) 및 제8 쓰기 요청(W8)은 제1 쓰기 요청(W1)과 페이지-히트(page-hit)(예: 페이지-히트(page-hit)는 입출력 요청의 뱅크 값 및 열 값이 동일한 것을 의미)인 상태이므로, 추가적인 뱅크 요청 없이 액티브 상태의 제1 뱅크(BANK1)에 스케줄링 될 수 있다.According to an embodiment, the read-write scheduler 1110 performs a read-write switching point based on request information (eg, read request information 1111 or write request information 1112) of a current turn (eg, write turn). (RW switching point) can be set. For example, since the maximum burst information in the write request information 1112 is 8, the read-write scheduler 1110 schedules the fifth to eighth write requests W5 to W8 and then performs the next turn (eg, : read turn) can be scheduled. For example, the fifth write request W5, the seventh write request W7, and the eighth write request W8 are combined with the first write request W1 and a page-hit (eg, a page-hit ( page-hit) means that the bank value and column value of the input/output request are the same), it can be scheduled to the active first bank BANK1 without additional bank request.

일 실시 예에 따르면, 읽기-쓰기 스케줄러(1110)는 제6 쓰기 요청(W6)에 대응하는 액티브 요청(A22)을 제2 뱅크(BANK2)에 스케줄링 할 수 있다. 제6 쓰기 요청(W6)은 제2 쓰기 요청(W2)과 뱅크 값은 동일하나 열 값이 다르기 때문에, 메모리 뱅크를 프리차지하고 다시 액티브 시키는 동작이 필요하다. 다만, 제2 쓰기 요청(W2)이 자동 프리차지 커맨드였기 때문에, 읽기-쓰기 스케줄러(1110)는 액티브 요청(A22)을 프리차지 요청 없이 제2 쓰기 요청(W2)의 다음에 스케줄링 할 수 있다. 한편, 동일한 뱅크에 스케줄링 되는 두 액티브 요청 사이에는 제2 지정된 시간(예: tRCD)보다 긴 제4 지정된 시간(예: tRC)이 필요하다. 읽기-쓰기 스케줄러(1110)는 액티브 요청(A21)으로부터 제4 지정된 시간(예: tRC) 이후 액티브 요청(A22)을 스케줄링 할 수 있다.According to an embodiment, the read-write scheduler 1110 may schedule the active request A22 corresponding to the sixth write request W6 to the second bank BANK2. Since the sixth write request W6 has the same bank value as the second write request W2 but has a different column value, an operation to precharge the memory bank and activate it again is required. However, since the second write request W2 is an automatic precharge command, the read-write scheduler 1110 may schedule the active request A22 after the second write request W2 without a precharge request. Meanwhile, a fourth specified time (eg, tRC) longer than the second specified time (eg, tRCD) is required between two active requests scheduled for the same bank. The read-write scheduler 1110 may schedule the active request A22 after a fourth designated time (eg, tRC) from the active request A21.

일 실시 예에 따르면, 제5 쓰기 요청(W5) 내지 제8 쓰기 요청(W8)에 제3 뱅크(BANK3)에 관한 요청이 없기 때문에, 읽기-쓰기 스케줄러(1110)는 제3 뱅크(BANK3)에 프리차지 요청(P31)을 스케줄링 할 수 있다. 쓰기 요청과 프리차지 요청 사이에는 쓰기 요청의 처리에 필요한 시간(예: tWR)과 추가 시간(a)이 필요할 수 있다.According to an embodiment, since there is no request for the third bank BANK3 in the fifth to eighth write requests W5 to W8, the read-write scheduler 1110 determines the third bank BANK3. A precharge request (P31) may be scheduled. Between the write request and the precharge request, a time required for processing the write request (eg, tWR) and an additional time (a) may be required.

일 실시 예에 따르면, 읽기-쓰기 스케줄러(1110)는 읽기-쓰기 스위칭 포인트 이후 다음 턴(예: 읽기 턴)을 스케줄링 할 수 있다. 읽기-쓰기 스케줄러(1110)는 다음 턴(예: 읽기 턴)의 요청 큐(예: 읽기 요청 큐(1120))를 확인할 수 있다. 예를 들면, 읽기-쓰기 스위칭 포인트에, 읽기 요청 큐(1120)는 제1 읽기 요청(R1) 내지 제4 읽기 요청(R4)을 저장하고 있을 수 있다. 읽기-쓰기 스케줄러(1110)는 제1 읽기 요청(R1) 내지 제4 읽기 요청(R4)을 스케줄링 하기 위해 뱅크 상태 정보(1113)를 통해 각 메모리 뱅크(BANK1, BANK2, BANK3, BANK4)의 액티브 상태를 확인할 수 있다. 또한, 읽기-쓰기 스케줄러(1110)는 쓰기 요청 큐(1130)를 통해 현재 턴(예: 쓰기 턴)의 스케줄링 상태를 확인할 수 있다. According to an embodiment, the read-write scheduler 1110 may schedule a next turn (eg, a read turn) after the read-write switching point. The read-write scheduler 1110 may check the request queue (eg, the read request queue 1120) of the next turn (eg, the read turn). For example, at the read-write switching point, the read request queue 1120 may store first to fourth read requests R1 to R4. The read-write scheduler 1110 determines the active state of each memory bank (BANK1, BANK2, BANK3, BANK4) through the bank status information 1113 to schedule the first read request R1 to the fourth read request R4 can be checked. Also, the read-write scheduler 1110 may check the scheduling status of the current turn (eg, write turn) through the write request queue 1130 .

일 실시 예에 따르면, 읽기-쓰기 스케줄러(1110)는 각 메모리 뱅크의 상태 및 요청들 사이의 필요한 시간에 기초하여 제1 읽기 요청(R1) 내지 제4 읽기 요청(R4)을 스케줄링 할 수 있다. 일 예로, 읽기-쓰기 스케줄러(1110)는 제1 읽기 요청(R1), 제2 읽기 요청(R) 및 제4 읽기 요청(R4)에 대응하는 프리차지 요청들(P11, P21, P41)을 스케줄링 할 수 있다. 제3 뱅크(BANK3)는 현재 턴(예: 쓰기 턴)에서 이미 프리차지 되었으므로(예: P31) 다음 턴(예: 읽기 턴)에서는 프리차지 요청이 필요하지 않을 수 있다. 읽기-쓰기 스케줄러(1110)는 현재 턴(예: 쓰기 턴)의 스케줄링과의 필요 시간 간격을 고려하여, 프리차지 요청들(P11, P21, P41)을 스케줄링 할 수 있다. 프리차지 요청들(P11, P21, P41)이 스케줄링 된 후, 읽기-쓰기 스케줄러(1110)는 제1 읽기 요청(R1) 내지 제4 읽기 요청(R4)에 대응하는 액티브 요청들(A12, A23, A32, A42)을 스케줄링 할 수 있다. 프리차지 요청과 액티브 요청 사이에는 제5 지정된 시간(tRP)이 필요할 수 있다. 액티브 요청들(A12, A23, A32, A42)이 스케줄링 된 후, 읽기-쓰기 스케줄러(1110)는 제1 읽기 요청(R1) 내지 제4 읽기 요청(R4)을 스케줄링 할 수 있다.According to an embodiment, the read-write scheduler 1110 may schedule the first read request R1 to the fourth read request R4 based on the state of each memory bank and a required time between requests. For example, the read-write scheduler 1110 schedules precharge requests P11, P21, and P41 corresponding to the first read request R1, the second read request R, and the fourth read request R4. can do. Since the third bank BANK3 has already been precharged in the current turn (eg, write turn) (eg, P31), a precharge request may not be required in the next turn (eg, read turn). The read-write scheduler 1110 may schedule the precharge requests P11, P21, and P41 in consideration of a required time interval with scheduling of a current turn (eg, a write turn). After the precharge requests P11, P21, and P41 are scheduled, the read-write scheduler 1110 determines the active requests A12, A23, and A23 corresponding to the first to fourth read requests R1 to R4. A32, A42) can be scheduled. A fifth designated time period (tRP) may be required between the precharge request and the active request. After the active requests A12, A23, A32, and A42 are scheduled, the read-write scheduler 1110 may schedule the first read request R1 to the fourth read request R4.

상술한 바와 같이, 메모리 컨트롤러(1100)는 읽기-쓰기 스위칭 포인트를 기준으로 읽기 요청들 또는 쓰기 요청들을 지정된 수 또는 지정된 시간만큼 분리하여 스케줄링 하고, 메모리 장치(1200)로 읽기 요청들 또는 쓰기 요청들을 전송할 수 있다. 이는 동종의 요청들 사이(예: 읽기 요청들 사이 또는 쓰기 요청들 사이)에 필요한 시간이 이종의 요청들 사이(예: 읽기 요청과 쓰기 요청 사이)에 필요한 시간보다 짧기 때문이다. 메모리 컨트롤러(1100)는 동종의 요청들을 하나의 턴에 묶어서 처리하여 동작 시간을 단축할 수 있다. 다만, 읽기-쓰기 스위칭 포인트를 설정하여 동종의 요청들을 묶어서 처리하면, 현재 턴의 마지막 입출력 요청(예: 제6 쓰기 요청(W6))과 다음 턴의 첫 번째 입출력 요청(예: 제4 읽기 요청(R4)) 사이에 공백 시간이 발생할 수 있다. 이러한 공백 시간은 쓰기 동작 이후 읽기 동작(또는 읽기 동작 이후 쓰기 동작)에 필요한 최소 요구 시간(tWTR)에 비하여 긴 시간이 필요할 수 있다.As described above, the memory controller 1100 separates and schedules read requests or write requests by a specified number or by a specified time based on the read-write switching point, and sends the read requests or write requests to the memory device 1200. can transmit This is because the time required between homogeneous requests (eg, between read requests or between write requests) is shorter than the time required between heterogeneous requests (eg, between a read request and a write request). The memory controller 1100 may reduce operation time by bundling and processing requests of the same type into one turn. However, if a read-write switching point is set to group and process requests of the same kind, the last I/O request of the current turn (e.g., the 6th write request (W6)) and the first I/O request of the next turn (e.g., the 4th read request) A blank time may occur between (R4)). This blank time may require a longer time than the minimum required time (tWTR) required for a read operation after a write operation (or a write operation after a read operation).

도 5는, 도 4의 읽기-쓰기 스케줄링 방법을 나타내는 순서도이다. 도 2 내지 도 5를 참조하면, 메모리 컨트롤러(1100)는 읽기-쓰기 스위칭 포인트를 기준으로 현재 턴(예: 쓰기 턴)과 다음 턴(예: 읽기 턴)을 분리하여 입출력 요청들(예: 읽기 요청들 또는 쓰기 요청들)을 스케줄링 할 수 있다.5 is a flowchart illustrating the read-write scheduling method of FIG. 4 . 2 to 5 , the memory controller 1100 separates a current turn (eg, a write turn) and a next turn (eg, a read turn) based on a read-write switching point to generate I/O requests (eg, a read turn). requests or write requests).

일 실시 예에 따르면, S110 단계에서, 메모리 컨트롤러(1100)는 현재 턴의 가능한 입출력 요청이 있는지 확인할 수 있다. 현재 턴에 가능한 입출력 요청이 있는 경우, 메모리 컨트롤러(1100)는 S120 단계를 수행할 수 있다. 현재 턴에 가능한 입출력 요청이 없는 경우, 메모리 컨트롤러(1100)는 S140 단계를 수행할 수 있다. 예를 들면, 메모리 컨트롤러(1100)는 읽기 요청 큐(1120) 또는 쓰기 요청 큐(1130)를 통해 현재 턴의 입출력 요청들의 정보를 확인할 수 있다. 입출력 요청이 불가능한 경우는 입출력 요청에 대응하는 메모리 뱅크가 비활성 상태인 경우 또는 메모리 뱅크는 활성 상태이나 열 값이 다른 경우를 포함할 수 있다.According to an embodiment, in step S110, the memory controller 1100 may check whether there is a possible input/output request of the current turn. If there is an input/output request possible in the current turn, the memory controller 1100 may perform step S120. If there is no input/output request possible in the current turn, the memory controller 1100 may perform step S140. For example, the memory controller 1100 may check information on input/output requests of the current turn through the read request queue 1120 or the write request queue 1130 . The case in which the I/O request is impossible may include a case in which a memory bank corresponding to the I/O request is in an inactive state or a case in which a memory bank is in an active state but has different column values.

일 실시 예에 따르면, S120 단계에서, 현재 턴에 가능한 입출력 요청이 있는 경우, 메모리 컨트롤러(1100)는 선택된 입출력 요청을 현재 턴에 스케줄링 할 수 있다.According to an embodiment, in step S120, if there is an input/output request possible in the current turn, the memory controller 1100 may schedule the selected input/output request in the current turn.

일 실시 예에 따르면, S130 단계에서, 메모리 컨트롤러(1100)는 최대 버스트 정보와 현재 버스트 정보를 비교할 수 있다. 현재 버스트 값이 최대 버스트 값보다 작은 경우, 메모리 컨트롤러(1100)는 S110 단계를 다시 수행할 수 있다. 현재 버스트 값이 최대 버스트 값보다 크거나 같은 경우, 메모리 컨트롤러(1100)는 S160 단계를 수행할 수 있다.According to an embodiment, in step S130, the memory controller 1100 may compare maximum burst information with current burst information. When the current burst value is less than the maximum burst value, the memory controller 1100 may perform step S110 again. When the current burst value is greater than or equal to the maximum burst value, the memory controller 1100 may perform step S160.

일 실시 예에 따르면, S140 단계에서, 현재 턴에 가능한 입출력 요청이 없는 경우, 메모리 컨트롤러(1100)는 현재 턴에 가능한 뱅크 요청(예: 액티브 요청 또는 프리차지 요청)이 있는지 확인할 수 있다. 현재 턴에 가능한 뱅크 요청이 있으면, 메모리 컨트롤러(1100)는 S150 단계를 수행할 수 있다. 현재 턴에 가능한 뱅크 요청이 없으면, 메모리 컨트롤러(1100)는 다시 S110 단계를 수행할 수 있다.According to an embodiment, in step S140, when there is no input/output request possible in the current turn, the memory controller 1100 may determine whether there is a bank request (eg, an active request or a precharge request) available in the current turn. If there is a bank request available for the current turn, the memory controller 1100 may perform step S150. If there is no bank request possible in the current turn, the memory controller 1100 may perform step S110 again.

일 실시 예에 따르면, S150 단계에서, 현재 턴에 가능한 뱅크 요청이 있으면, 메모리 컨트롤러(1100)는 선택된 뱅크 요청을 현재 턴에 스케줄링 할 수 있다. 메모리 컨트롤러(1100)는 선택된 뱅크 요청을 스케줄링 한 후 다시 S110 단계를 수행할 수 있다.According to an embodiment, in step S150, if there is a bank request available for the current turn, the memory controller 1100 may schedule the selected bank request for the current turn. After scheduling the selected bank request, the memory controller 1100 may perform step S110 again.

일 실시 예에 따르면, S160 단계에서, 현재 버스트 값이 최대 버스트 값보다 크거나 같은 경우, 메모리 컨트롤러(1100)는 현재 턴을 종료하고 다음 턴으로 전환할 수 있다. 예를 들면, 현재 턴이 읽기 턴이면, 다음 턴은 쓰기 턴일 수 있다. 현재 턴이 쓰기 턴이면, 다음 턴은 읽기 턴일 수 있다. S130 단계에서, 현재 버스트 값과 최대 버스트 값을 비교하는 과정에서, 메모리 컨트롤러(1100)는 최대 버스트 값에 기초하여 읽기-쓰기 스위칭 포인트를 설정할 수 있다.According to an embodiment, in step S160, when the current burst value is greater than or equal to the maximum burst value, the memory controller 1100 may end the current turn and switch to the next turn. For example, if the current turn is a read turn, the next turn may be a write turn. If the current turn is a write turn, the next turn may be a read turn. In step S130 , in a process of comparing the current burst value and the maximum burst value, the memory controller 1100 may set a read-write switching point based on the maximum burst value.

도 6은, 도 2의 읽기 요청 큐, 쓰기 요청 큐, 읽기 요청 정보, 쓰기 요청 정보 및 뱅크 상태 정보의 다른 예를 나타내는 도면이다. 도 2, 도 3 및 도 6을 참조하면, 도 6의 읽기 요청 큐(1120), 쓰기 요청 큐(1130), 읽기 요청 정보(1111), 쓰기 요청 정보(1112) 및 뱅크 상태 정보(1113)는 도 3의 읽기 요청 큐(1120), 쓰기 요청 큐(1130), 읽기 요청 정보(1111), 쓰기 요청 정보(1112) 및 뱅크 상태 정보(1113)와 대부분 동일할 수 있다. 도 3의 읽기 요청 큐(1120), 쓰기 요청 큐(1130), 읽기 요청 정보(1111), 쓰기 요청 정보(1112) 및 뱅크 상태 정보(1113)와 동일한 내용은 설명을 생략한다.FIG. 6 is a diagram illustrating another example of the read request queue, write request queue, read request information, write request information, and bank status information of FIG. 2 . Referring to FIGS. 2, 3, and 6, the read request queue 1120, the write request queue 1130, the read request information 1111, the write request information 1112, and the bank status information 1113 of FIG. 6 are Most of the read request queue 1120, write request queue 1130, read request information 1111, write request information 1112, and bank status information 1113 of FIG. 3 may be the same. Descriptions of the same contents as the read request queue 1120, the write request queue 1130, the read request information 1111, the write request information 1112, and the bank status information 1113 of FIG. 3 are omitted.

일 실시 예에 따르면, 읽기 요청 정보(1111) 및 쓰기 요청 정보(1112)는 페이지-히트(page-hit) 정보를 포함할 수 있다. 예를 들면, 페이지-히트(page-hit)는 입출력 요청의 뱅크 값 및 열 값이 동일한 것을 의미한다. 페이지-히트(page-hit) 정보는 아직 처리되지 않은(또는 메모리 장치(1200)로 전송되지 않은) 입출력 요청들 중 뱅크 값 및 열 값이 동일한 입출력 요청들의 수를 나타낼 수 있다. 일 예로, 쓰기 요청 큐(1130)에서 현재 처리되지 않은 제5 쓰기 요청(W5) 내지 제9 쓰기 요청(W9) 중에서 뱅크 값(예: bank1) 및 열 값(예: row1)이 동일한 제5 쓰기 요청(W5), 제7 쓰기 요청(W7) 내지 제9 쓰기 요청(W9)이 페이지-히트(page-hit)인 입출력 요청들이다. 또한, 페이지-히트(page-hit) 정보는 4가 될 수 있다.According to an embodiment, the read request information 1111 and the write request information 1112 may include page-hit information. For example, a page-hit means that the bank value and column value of an I/O request are the same. The page-hit information may represent the number of I/O requests having the same bank value and column value among I/O requests that have not yet been processed (or not transmitted to the memory device 1200 ). For example, among the fifth write requests (W5) to ninth write requests (W9) currently unprocessed in the write request queue 1130, a fifth write having the same bank value (eg bank1) and column value (eg row1) The request W5, the seventh write request W7 to the ninth write request W9 are input/output requests that are page-hits. Also, page-hit information may be 4.

도 7은, 도 6의 정보들의 이용한 도 2의 메모리 컨트롤러의 읽기-쓰기 스케줄링 방법의 일 예를 나타내는 도면이다. 도 2, 도 6 및 도 7을 참조하면, 메모리 컨트롤러(1100)는 턴을 정하여 읽기 요청(RD)들과 쓰기 요청(WR)들을 구분하여 스케줄링 할 수 있다. 메모리 컨트롤러(1100)는 읽기-쓰기 스위칭 포인트를 기준으로 현재 턴(예: 쓰기 턴)에서 다음 턴(예: 읽기 턴)으로 전환하여 스케줄링 할 수 있다. 또한, 메모리 컨트롤러(1100)는 근접 스위칭 포인트(near switching point)를 설정할 수 있다.FIG. 7 is a diagram illustrating an example of a read-write scheduling method of the memory controller of FIG. 2 using the information of FIG. 6 . Referring to FIGS. 2, 6, and 7 , the memory controller 1100 may schedule read requests (RDs) and write requests (WRs) by determining a turn. The memory controller 1100 may perform scheduling by switching from a current turn (eg, a write turn) to a next turn (eg, a read turn) based on a read-write switching point. Also, the memory controller 1100 may set a near switching point.

일 실시 예에 따르면, 메모리 컨트롤러(1100)는 현재 턴에서 읽기-쓰기 스위칭 포인트 이전에 근접 스위칭 포인트를 설정할 수 있다. 예를 들면, 메모리 컨트롤러(1100)는 현재 턴에서 처리된 입출력 요청들의 수에 기초하여 근접 스위칭 포인트를 설정할 수 있다. 메모리 컨트롤러(1100)는 현재 턴(예: 쓰기 턴)의 요청 정보(예: 쓰기 요청 정보(1112))를 확인할 수 있다. 메모리 컨트롤러(1100)는 현재 턴의 페이지-히트인 입출력 요청의 수(예: 4)를 확인할 수 있다. 메모리 컨트롤러(1100)는 최대 버스트 값(예: 8)과 현재 버스트 값(예: 4)의 버스트 차이 값(예: 8-4=4)을 확인할 수 있다. 메모리 컨트롤러(1100)는 버스트 차이 값과 페이지-히트인 입출력 요청의 수를 비교할 수 있다. 페이지-히트인 입출력 요청의 수가 버스트 차이 값보다 작으면, 메모리 컨트롤러(1100)는 계속 현재 턴의 스케줄링을 수행할 수 있다. 페이지-히트인 입출력 요청의 수가 버스트 차이 값보다 크거나 같아지면, 메모리 컨트롤러(1100)는 현재까지 처리된 입출력 요청들 중 마지막 요청(예: 제4 쓰기 요청(W4))의 다음에 근접 스위칭 포인트를 설정할 수 있다.According to an embodiment, the memory controller 1100 may set the proximity switching point prior to the read-write switching point in the current turn. For example, the memory controller 1100 may set the proximity switching point based on the number of I/O requests processed in the current turn. The memory controller 1100 may check request information (eg, write request information 1112) of a current turn (eg, write turn). The memory controller 1100 may check the number (eg, 4) of I/O requests that are page-hits of the current turn. The memory controller 1100 may check a burst difference value (eg, 8−4=4) between the maximum burst value (eg, 8) and the current burst value (eg, 4). The memory controller 1100 may compare the burst difference value with the number of I/O requests that are page hits. If the number of page-hit I/O requests is smaller than the burst difference value, the memory controller 1100 may continue to perform scheduling of the current turn. If the number of page-hit I/O requests is greater than or equal to the burst difference value, the memory controller 1100 switches to the next nearest switching point of the last request (eg, the fourth write request W4) among the I/O requests processed so far. can be set.

일 실시 예에 따르면, 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이에서, 메모리 컨트롤러(1100)는 현재 턴의 뱅크 요청(예: 액티브 요청(A22), 프리치지 요청(P31))의 스케줄링을 차단할 수 있다. 메모리 컨트롤러(1100)는 차단된 뱅크 요청에 대응하는 입출력 요청(예: 제6 쓰기 요청(W6))의 스케줄링을 차단할 수 있다. 메모리 컨트롤러(1100)는 아직 처리되지 않고 페이지-히트인 입출력 요청들(예: 제5 쓰기 요청(W5), 제7 쓰기 요청(W7) 내지 제9 쓰기 요청(W9))을 현재 턴에 스케줄링 할 수 있다.According to an embodiment, between the proximity switching point and the read-write switching point, the memory controller 1100 may block scheduling of a bank request (eg, active request A22 or pre-chill request P31) of the current turn. there is. The memory controller 1100 may block scheduling of an I/O request (eg, the sixth write request W6) corresponding to the blocked bank request. The memory controller 1100 may schedule I/O requests that have not yet been processed and are page hits (eg, the fifth write request W5, the seventh write request W7 to the ninth write request W9) in the current turn. can

일 실시 예에 따르면, 메모리 컨트롤러(1100)는 현재 턴(예: 쓰기 턴)의 차단된 뱅크 요청에 대응하는 메모리 뱅크(예: 제2 뱅크(BANK2), 제3 뱅크(BANK))에 다음 턴(예: 읽기 턴)의 뱅크 요청(예: 액티브 요청(A23), 프리차지 요청(P32))을 현재 턴에 스케줄링 할 수 있다. 이로 인해, 현재 턴에 스케줄링 된 다음 턴의 뱅크 요청에 대응하는 입출력 요청(예: 제2 읽기 요청(R2), 제3 읽기 요청(R3))은 도 4의 방법으로 스케줄링 된 경우보다 앞당겨서 다음 턴에 스케줄링 될 수 있다. 일 예로, 제2 읽기 요청(R2)은 쓰기 동작 이후 읽기 동작(또는 읽기 동작 이후 쓰기 동작)에 필요한 최소 요구 시간(tWTR)이 경과한 직후에 바로 스케줄링 될 수 있다.According to an embodiment, the memory controller 1100 performs a next turn on a memory bank (eg, a second bank BANK2 or a third bank BANK) corresponding to a blocked bank request of a current turn (eg, a write turn). (eg, read turn) bank requests (eg, active request (A23), precharge request (P32)) can be scheduled in the current turn. As a result, I/O requests (e.g., the second read request (R2) and the third read request (R3)) corresponding to the bank request of the next turn scheduled for the current turn are scheduled earlier in the next turn than when scheduled in the method of FIG. can be scheduled on For example, the second read request R2 may be scheduled right after the minimum required time tWTR required for a read operation (or a write operation after a read operation) elapses after a write operation.

상술한 바와 같이, 메모리 컨트롤러(1100)는 읽기-쓰기 스위칭 포인트 이전에 근접 스위칭 포인트를 설정하고, 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이의 불필요한 뱅크 요청의 스케줄링을 차단할 수 있다. 이에, 메모리 컨트롤러(1100)는 불필요한 전력 소비를 감소시킬 수 있다. 또한, 메모리 컨트롤러(1100)는 현재 턴의 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이에 다음 턴의 뱅크 요청을 스케줄링 할 수 있다. 이로 인해, 읽기-쓰기 스위칭 포인트 전후에 데이터(DATA)의 공백 시간은 도 4의 경우보다 감소하여 쓰기 동작 이후 읽기 동작(또는 읽기 동작 이후 쓰기 동작)에 필요한 최소 요구 시간(tWTR)에 근접하게 처리할 수 있다. 따라서, 읽기-쓰기 전환 시 소요되는 레이턴시(latency)는 감소하고, 메모리 시스템(1000)의 성능은 향상될 수 있다.As described above, the memory controller 1100 may set the proximity switching point before the read-write switching point and block unnecessary bank request scheduling between the proximity switching point and the read-write switching point. Thus, the memory controller 1100 can reduce unnecessary power consumption. In addition, the memory controller 1100 may schedule a bank request of the next turn between the adjacent switching point of the current turn and the read-write switching point. As a result, the blank time of the data (DATA) before and after the read-write switching point is reduced compared to the case of FIG. 4, and is processed close to the minimum required time (tWTR) required for a read operation after a write operation (or a write operation after a read operation). can do. Accordingly, latency required during read-write conversion may be reduced, and performance of the memory system 1000 may be improved.

도 8은, 도 7의 읽기-쓰기 스케줄링 방법을 나타내는 순서도이다. 도 2, 도 6 내지 도 8을 참조하면, 메모리 컨트롤러(1100)는 읽기-쓰기 스위칭 포인트를 기준으로 현재 턴(예: 쓰기 턴)과 다음 턴(예: 읽기 턴)을 분리하여 입출력 요청들(예: 읽기 요청들 또는 쓰기 요청들)을 스케줄링 할 수 있다. 또한, 메모리 컨트롤러(1100)는 근접 스위칭 포인트를 설정하고, 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이에서 뱅크 요청을 효율적으로 관리할 수 있다.8 is a flowchart illustrating the read-write scheduling method of FIG. 7 . 2 and 6 to 8 , the memory controller 1100 separates a current turn (eg, a write turn) and a next turn (eg, a read turn) based on a read-write switching point, and receives input/output requests (eg, a read turn). e.g. read requests or write requests). Also, the memory controller 1100 may set a proximity switching point and efficiently manage a bank request between the proximity switching point and the read-write switching point.

일 실시 예에 따르면, S210 단계에서, 메모리 컨트롤러(1100)는 재 턴의 가능한 입출력 요청이 있는지 확인할 수 있다. 현재 턴에 가능한 입출력 요청이 있는 경우, 메모리 컨트롤러(1100)는 S220 단계를 수행할 수 있다. 현재 턴에 가능한 입출력 요청이 없는 경우, 메모리 컨트롤러(1100)는 S240 단계를 수행할 수 있다. 예를 들면, 메모리 컨트롤러(1100)는 읽기 요청 큐(1120) 또는 쓰기 요청 큐(1130)를 통해 현재 턴의 입출력 요청들의 정보를 확인할 수 있다. 입출력 요청이 불가능한 경우는 입출력 요청에 대응하는 메모리 뱅크가 비활성 상태인 경우 또는 메모리 뱅크는 활성 상태이나 열 값이 다른 경우를 포함할 수 있다.According to an embodiment, in step S210, the memory controller 1100 may check whether there is a possible input/output request for re-turn. If there is an input/output request possible in the current turn, the memory controller 1100 may perform step S220. If there is no input/output request possible in the current turn, the memory controller 1100 may perform step S240. For example, the memory controller 1100 may check information on input/output requests of the current turn through the read request queue 1120 or the write request queue 1130 . The case in which the I/O request is impossible may include a case in which a memory bank corresponding to the I/O request is in an inactive state or a case in which a memory bank is in an active state but has different column values.

일 실시 예에 따르면, S220 단계에서, 현재 턴에 가능한 입출력 요청이 있는 경우, 메모리 컨트롤러(1100)는 선택된 입출력 요청을 현재 턴에 스케줄링 할 수 있다.According to an embodiment, in step S220, if there is an input/output request possible in the current turn, the memory controller 1100 may schedule the selected input/output request in the current turn.

일 실시 예에 따르면, S230 단계에서, 메모리 컨트롤러(1100)는 최대 버스트 정보와 현재 버스트 정보를 비교할 수 있다. 현재 버스트 값이 최대 버스트 값보다 작은 경우, 메모리 컨트롤러(1100)는 S210 단계를 다시 수행할 수 있다. 현재 버스트 값이 최대 버스트 값보다 크거나 같은 경우, 메모리 컨트롤러(1100)는 S290 단계를 수행할 수 있다.According to an embodiment, in step S230, the memory controller 1100 may compare maximum burst information with current burst information. When the current burst value is less than the maximum burst value, the memory controller 1100 may perform step S210 again. When the current burst value is greater than or equal to the maximum burst value, the memory controller 1100 may perform step S290.

일 실시 예에 따르면, S240 단계에서, 메모리 컨트롤러(1100)는 현재 턴의 페이지-히트인 입출력 요청의 수(예: 4)를 확인할 수 있다. 메모리 컨트롤러(1100)는 최대 버스트 값(예: 8)과 현재 버스트 값(예: 4)의 버스트 차이 값(예: 8-4=4)을 확인할 수 있다. 메모리 컨트롤러(1100)는 버스트 차이 값과 페이지-히트인 입출력 요청의 수를 비교할 수 있다. 페이지-히트인 입출력 요청의 수가 버스트 차이 값보다 작으면, 메모리 컨트롤러(1100)는 S250 단계를 수행할 수 있다. 페이지-히트인 입출력 요청의 수가 버스트 차이 값보다 크거나 같아지면, 메모리 컨트롤러(1100)는 S270 단계를 수행할 수 있다.According to an embodiment, in step S240, the memory controller 1100 may check the number of I/O requests (eg, 4) that are page-hits of the current turn. The memory controller 1100 may check a burst difference value (eg, 8−4=4) between the maximum burst value (eg, 8) and the current burst value (eg, 4). The memory controller 1100 may compare the burst difference value with the number of I/O requests that are page hits. If the number of page-hit I/O requests is less than the burst difference value, the memory controller 1100 may perform step S250. When the number of page-hit I/O requests is greater than or equal to the burst difference value, the memory controller 1100 may perform step S270.

일 실시 예에 따르면, S250 단계에서, 페이지-히트인 입출력 요청의 수가 버스트 차이 값보다 작으면, 메모리 컨트롤러(1100)는 메모리 컨트롤러(1100)는 현재 턴에 가능한 뱅크 요청(예: 액티브 요청 또는 프리차지 요청)이 있는지 확인할 수 있다. 현재 턴에 가능한 뱅크 요청이 있으면, 메모리 컨트롤러(1100)는 S260 단계를 수행할 수 있다. 현재 턴에 가능한 뱅크 요청이 없으면, 메모리 컨트롤러(1100)는 다시 S210 단계를 수행할 수 있다.According to an embodiment, in step S250, if the number of page-hit input/output requests is smaller than the burst difference value, the memory controller 1100 determines a possible bank request for the current turn (eg, an active request or a free request). charge request). If there is a possible bank request for the current turn, the memory controller 1100 may perform step S260. If there is no bank request possible in the current turn, the memory controller 1100 may perform step S210 again.

일 실시 예에 따르면, S260 단계에서, 현재 턴에 가능한 뱅크 요청이 있으면, 메모리 컨트롤러(1100)는 선택된 뱅크 요청을 현재 턴에 스케줄링 할 수 있다. 메모리 컨트롤러(1100)는 선택된 뱅크 요청을 스케줄링 한 후 다시 S210 단계를 수행할 수 있다.According to an embodiment, in step S260, if there is a bank request available for the current turn, the memory controller 1100 may schedule the selected bank request for the current turn. The memory controller 1100 may perform step S210 again after scheduling the selected bank request.

일 실시 예에 따르면, S270 단계에서, 페이지-히트인 입출력 요청의 수가 버스트 차이 값보다 크거나 같아지면, 메모리 컨트롤러(1100)는 다음 턴에 가능한 뱅크 요청(예: 액티브 요청(A23), 프리차지 요청(P32))이 있는지 확인할 수 있다. 예를 들면, 페이지-히트인 입출력 요청의 수가 버스트 차이 값보다 크거나 같아지면, 메모리 컨트롤러(1100)는 현 시점에 근접 스위칭 포인트를 설정할 수 있다. 메모리 컨트롤러(1100)는 근접 스위칭 포인트 이후에 현재 턴의 뱅크 요청(예: 액티브 요청(A22), 프리치지 요청(P31))을 스케줄링 하지 않고, 다음 턴의 뱅크 요청을 스케줄링 할 수 있다. 다음 턴에 가능한 뱅크 요청이 있으면, 메모리 컨트롤러(1100)는 S280 단계를 수행할 수 있다. 다음 턴에 가능한 뱅크 요청이 없으면, 메모리 컨트롤러(1100)는 다시 S210 단계를 수행할 수 있다.According to an embodiment, if the number of page-hit I/O requests is greater than or equal to the burst difference value in step S270, the memory controller 1100 determines possible bank requests for the next turn (eg, active request A23, precharge It is possible to check whether there is a request (P32)). For example, if the number of page-hit I/O requests is greater than or equal to the burst difference value, the memory controller 1100 may set the proximity switching point at this time. The memory controller 1100 may schedule a bank request of a next turn after the proximity switching point without scheduling a bank request of the current turn (eg, active request A22 or pre-chill request P31 ). If there is a possible bank request in the next turn, the memory controller 1100 may perform step S280. If there is no possible bank request in the next turn, the memory controller 1100 may perform step S210 again.

일 실시 예에 따르면, S280 단계에서, 다음 턴에 가능한 뱅크 요청이 있으면, 메모리 컨트롤러(1100)는 선택된 다음 턴의 뱅크 요청(예: 액티브 요청(A23), 프리차지 요청(P32))을 현재 턴에 스케줄링 할 수 있다. 메모리 컨트롤러(1100)는 선택된 다음 턴의 뱅크 요청을 현재 턴에 스케줄링 한 후 다시 S210 단계를 수행할 수 있다.According to an embodiment, in step S280, if there is a bank request available for the next turn, the memory controller 1100 sends the bank request (eg, active request A23, precharge request P32) of the selected next turn to the current turn. can be scheduled on The memory controller 1100 may perform step S210 again after scheduling the bank request of the next selected turn to the current turn.

일 실시 예에 따르면, S290 단계에서, 현재 버스트 값이 최대 버스트 값보다 크거나 같은 경우, 메모리 컨트롤러(1100)는 현재 턴을 종료하고 다음 턴으로 전환할 수 있다. 예를 들면, 현재 턴이 읽기 턴이면, 다음 턴은 쓰기 턴일 수 있다. 현재 턴이 쓰기 턴이면, 다음 턴은 읽기 턴일 수 있다.According to an embodiment, in step S290, when the current burst value is greater than or equal to the maximum burst value, the memory controller 1100 may end the current turn and switch to the next turn. For example, if the current turn is a read turn, the next turn may be a write turn. If the current turn is a write turn, the next turn may be a read turn.

상술한 바와 같이, S230 단계에서 현재 버스트 값과 최대 버스트 값을 비교하는 과정에서, 메모리 컨트롤러(1100)는 최대 버스트 값에 기초하여 읽기-쓰기 스위칭 포인트를 설정할 수 있다. 또한, S240 단계에서 페이지-히트인 입출력 요청의 수가 버스트 차이 값을 비교하는 과정에서, 메모리 컨트롤러(1100)는 근접 스위칭 포인트를 설정할 수 있다.As described above, in the process of comparing the current burst value and the maximum burst value in step S230, the memory controller 1100 may set a read-write switching point based on the maximum burst value. In addition, in the process of comparing the number of page-hit I/O requests with the burst difference value in step S240, the memory controller 1100 may set a proximity switching point.

도 9는, 도 6의 정보들의 이용한 도 2의 메모리 컨트롤러의 읽기-쓰기 스케줄링 방법의 다른 예를 나타내는 도면이다. 도 2, 도 6 및 도 9를 참조하면, 메모리 컨트롤러(1100)는 턴을 정하여 읽기 요청(RD)들과 쓰기 요청(WR)들을 구분하여 스케줄링 할 수 있다. 메모리 컨트롤러(1100)는 읽기-쓰기 스위칭 포인트를 기준으로 현재 턴(예: 쓰기 턴)에서 다음 턴(예: 읽기 턴)으로 전환하여 스케줄링 할 수 있다. 또한, 메모리 컨트롤러(1100)는 근접 스위칭 포인트(near switching point)를 설정할 수 있다.FIG. 9 is a diagram illustrating another example of a read-write scheduling method of the memory controller of FIG. 2 using the information of FIG. 6 . Referring to FIGS. 2, 6, and 9 , the memory controller 1100 may schedule read requests (RDs) and write requests (WRs) by determining a turn. The memory controller 1100 may perform scheduling by switching from a current turn (eg, a write turn) to a next turn (eg, a read turn) based on a read-write switching point. Also, the memory controller 1100 may set a near switching point.

일 실시 예에 따르면, 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이에서, 메모리 컨트롤러(1100)는 현재 턴의 액티브 요청(예: 액티브 요청(A22))의 스케줄링을 차단할 수 있다. 메모리 컨트롤러(1100)는 차단된 액티브 요청에 대응하는 입출력 요청(예: 제6 쓰기 요청(W6))의 스케줄링을 차단할 수 있다. 메모리 컨트롤러(1100)는 아직 처리되지 않고 페이지-히트인 입출력 요청들(예: 제5 쓰기 요청(W5), 제7 쓰기 요청(W7) 내지 제9 쓰기 요청(W9))을 현재 턴에 스케줄링 할 수 있다.According to an embodiment, between the proximity switching point and the read-write switching point, the memory controller 1100 may block scheduling of an active request (eg, active request A22) of the current turn. The memory controller 1100 may block scheduling of an I/O request (eg, the sixth write request W6) corresponding to the blocked active request. The memory controller 1100 may schedule I/O requests that have not yet been processed and are page hits (eg, the fifth write request W5, the seventh write request W7 to the ninth write request W9) in the current turn. can

일 실시 예에 따르면, 현재 턴의 액티브 요청이 차단되면, 다음 턴에서 메모리 컨트롤러(1100)는 현재 턴(예: 쓰기 턴)의 차단된 뱅크 요청에 대응하는 메모리 뱅크(예: 제2 뱅크(BANK2))의 뱅크 요청(예: 액티브 요청(A23))을 신속하게 스케줄링 할 수 있다. 이로 인해, 현재 턴(예: 쓰기 턴)의 차단된 뱅크 요청에 대응하는 메모리 뱅크(예: 제2 뱅크(BANK2))에 다음 턴의 입출력 요청(예: 제2 읽기 요청(R2))은 도 4의 방법으로 스케줄링 된 경우보다 앞당겨서 다음 턴에 스케줄링 될 수 있다.According to an embodiment, if the active request of the current turn is blocked, in the next turn, the memory controller 1100 provides a memory bank corresponding to the blocked bank request of the current turn (eg, write turn) (eg, a second bank (BANK2)). )) bank request (eg, active request (A23)) can be quickly scheduled. As a result, the I/O request of the next turn (eg, the second read request (R2)) to the memory bank (eg, the second bank (BANK2)) corresponding to the blocked bank request of the current turn (eg, the write turn) is not passed. It can be scheduled in the next turn earlier than when it was scheduled in the method of 4.

상술한 바와 같이, 메모리 컨트롤러(1100)는 읽기-쓰기 스위칭 포인트 이전에 근접 스위칭 포인트를 설정하고, 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이의 불필요한 액티브 요청의 스케줄링을 차단할 수 있다. 이에, 메모리 컨트롤러(1100)는 불필요한 전력 소비를 감소시킬 수 있다. 또한, 메모리 컨트롤러(1100)는 차단된 액티브 요청에 대응하는 메모리 뱅크에 다음 턴에서 뱅크 요청을 신속하게 스케줄링 할 수 있다. 이로 인해, 읽기-쓰기 스위칭 포인트 전후에 데이터(DATA)의 공백 시간은 도 4의 경우보다 감소할 수 있다. 따라서, 읽기-쓰기 전환 시 소요되는 레이턴시(latency)는 감소하고, 메모리 시스템(1000)의 성능은 향상될 수 있다.As described above, the memory controller 1100 may set the proximity switching point before the read-write switching point and block unnecessary active request scheduling between the proximity switching point and the read-write switching point. Thus, the memory controller 1100 can reduce unnecessary power consumption. Also, the memory controller 1100 can quickly schedule a bank request in the next turn to the memory bank corresponding to the blocked active request. As a result, the blank time of the data DATA before and after the read-write switching point may be reduced compared to the case of FIG. 4 . Accordingly, latency required during read-write conversion may be reduced, and performance of the memory system 1000 may be improved.

도 10은, 도 9의 읽기-쓰기 스케줄링 방법을 나타내는 순서도이다. 도 2, 도 6, 도 9 및 도 10을 참조하면, 메모리 컨트롤러(1100)는 읽기-쓰기 스위칭 포인트를 기준으로 현재 턴(예: 쓰기 턴)과 다음 턴(예: 읽기 턴)을 분리하여 입출력 요청들(예: 읽기 요청들 또는 쓰기 요청들)을 스케줄링 할 수 있다. 또한, 메모리 컨트롤러(1100)는 근접 스위칭 포인트를 설정하고, 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이에서 뱅크 요청을 효율적으로 관리할 수 있다. S310 단계 내지 S360 단계는 도 8의 S210 단계 내지 S260 단계와 동일 또는 유사할 수 있다. 또한, S390 단계는 도 8의 S290 단계와 동일 또는 유사할 수 있다. 이에, S310 단계 내지 S360 단계, 및 S390 단계에 대한 설명은 생략한다.10 is a flowchart illustrating the read-write scheduling method of FIG. 9 . Referring to FIGS. 2, 6, 9, and 10 , the memory controller 1100 separates a current turn (eg, a write turn) and a next turn (eg, a read turn) based on a read-write switching point to input/output. You can schedule requests (eg read requests or write requests). Also, the memory controller 1100 may set a proximity switching point and efficiently manage a bank request between the proximity switching point and the read-write switching point. Steps S310 to S360 may be the same as or similar to steps S210 to S260 of FIG. 8 . Also, step S390 may be the same as or similar to step S290 of FIG. 8 . Accordingly, descriptions of steps S310 to S360 and S390 are omitted.

일 실시 예에 따르면, S370 단계에서, 페이지-히트인 입출력 요청의 수가 버스트 차이 값보다 크거나 같아지면, 메모리 컨트롤러(1100)는 현재 턴에 가능한 프리차지 요청(예: 프리차지 요청(P31))이 있는지 확인할 수 있다. 예를 들면, 페이지-히트인 입출력 요청의 수가 버스트 차이 값보다 크거나 같아지면, 메모리 컨트롤러(1100)는 현 시점에 근접 스위칭 포인트를 설정할 수 있다. 메모리 컨트롤러(1100)는 근접 스위칭 포인트 이후에 현재 턴의 액티브 요청(예: 액티브 요청(A22))을 스케줄링 하지 않고, 현재 턴에서 뱅크 요청 중 프리치지 요청(예: 프리치지 요청(P31))만을 스케줄링 할 수 있다. 현재 턴에 가능한 프리차지 요청이 있으면, 메모리 컨트롤러(1100)는 S380 단계를 수행할 수 있다. 현재 턴에 가능한 프리차지 요청이 없으면, 메모리 컨트롤러(1100)는 다시 S310 단계를 수행할 수 있다.According to an embodiment, in step S370, if the number of page-hit I/O requests is greater than or equal to the burst difference value, the memory controller 1100 issues a precharge request available for the current turn (eg, a precharge request P31). You can check if this exists. For example, if the number of page-hit I/O requests is greater than or equal to the burst difference value, the memory controller 1100 may set the proximity switching point at this time. The memory controller 1100 does not schedule an active request (eg, active request (A22)) of the current turn after the proximity switching point, and only performs a pre-chill request (eg, a pre-chill request (P31)) among bank requests in the current turn. can be scheduled. If there is a possible precharge request in the current turn, the memory controller 1100 may perform step S380. If there is no precharge request possible in the current turn, the memory controller 1100 may perform step S310 again.

일 실시 예에 따르면, S380 단계에서, 현재 턴에 가능한 프리차지 요청이 있으면, 메모리 컨트롤러(1100)는 선택된 프리차지 요청(예: 프리차지 요청(P31))을 현재 턴에 스케줄링 할 수 있다. 메모리 컨트롤러(1100)는 선택된 프리차지 요청을 현재 턴에 스케줄링 한 후 다시 S310 단계를 수행할 수 있다.According to an embodiment, in step S380, if there is a precharge request available for the current turn, the memory controller 1100 may schedule the selected precharge request (eg, the precharge request P31) for the current turn. The memory controller 1100 may perform step S310 again after scheduling the selected precharge request in the current turn.

상술한 바와 같이, 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이에서, 메모리 컨트롤러(1100)는 액티브 요청의 스케줄링을 차단할 수 있다. 이에, 메모리 컨트롤러(1100)는 불필요한 전력 소비를 감소시킬 수 있다. 또한, 메모리 컨트롤러(1100)는 차단된 액티브 요청에 대응하는 메모리 뱅크에 다음 턴에서 뱅크 요청을 신속하게 스케줄링 할 수 있다. 이로 인해, 읽기-쓰기 스위칭 포인트 전후에 데이터(DATA)의 공백 시간은 도 4의 경우보다 감소할 수 있다. 한편, 도 10의 방법은 도 8의 경우보다 성능 향상이 작을 수 있으나, 전력 효율 측면에서는 도 8의 경우보다 향상될 수 있다.As described above, between the proximity switching point and the read-write switching point, the memory controller 1100 may block active request scheduling. Thus, the memory controller 1100 can reduce unnecessary power consumption. Also, the memory controller 1100 can quickly schedule a bank request in the next turn to the memory bank corresponding to the blocked active request. As a result, the blank time of the data DATA before and after the read-write switching point may be reduced compared to the case of FIG. 4 . Meanwhile, the method of FIG. 10 may have less performance improvement than the case of FIG. 8 , but may improve power efficiency compared to the case of FIG. 8 .

도 11은, 도 2의 메모리 컨트롤러의 읽기-쓰기 스케줄링 방법을 나타내는 순서도이다. 도 2 및 도 6 내지 도 11을 참조하면, 메모리 컨트롤러(1100)는 읽기-쓰기 스위칭 포인트를 기준으로 현재 턴(예: 쓰기 턴)과 다음 턴(예: 읽기 턴)을 분리하여 입출력 요청들(예: 읽기 요청들 또는 쓰기 요청들)을 스케줄링 할 수 있다. 또한, 메모리 컨트롤러(1100)는 근접 스위칭 포인트를 설정하고, 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이에서 뱅크 요청을 효율적으로 관리할 수 있다.11 is a flowchart illustrating a read-write scheduling method of the memory controller of FIG. 2 . Referring to FIGS. 2 and 6 to 11 , the memory controller 1100 separates a current turn (eg, a write turn) and a next turn (eg, a read turn) based on a read-write switching point and receives input/output requests (eg, a read turn). e.g. read requests or write requests). Also, the memory controller 1100 may set a proximity switching point and efficiently manage a bank request between the proximity switching point and the read-write switching point.

일 실시 예에 따르면, S410 단계에서, 메모리 컨트롤러(1100)는 현재 턴으로부터 다음 턴으로 전환되는 읽기-쓰기 스위칭 포인트를 설정하여 입출력 요청들 및 입출력 요청들에 대응하는 뱅크 요청들을 스케줄링 할 수 있다. 예를 들면, 메모리 컨트롤러(1100)는 지정된 단위(예: 지정된 요청들의 수 또는 지정된 시간)에 따라 턴을 정하여 일정량의 읽기 요청들 또는 쓰기 요청들이 전송되도록 스케줄링 할 수 있다. 메모리 컨트롤러(1100)는 읽기 턴 또는 쓰기 턴에서 수행되는 요청들의 개수에 기초하여 읽기-쓰기 스위칭 포인트를 설정할 수 있다. 또는 메모리 컨트롤러(1100)는 읽기 턴 또는 쓰기 턴이 수행되는 시간에 기초하여 읽기-쓰기 스위칭 포인트를 설정할 수 있다.According to an embodiment, in step S410, the memory controller 1100 may schedule I/O requests and bank requests corresponding to the I/O requests by setting a read-write switching point that is converted from a current turn to a next turn. For example, the memory controller 1100 may schedule a certain amount of read requests or write requests to be transmitted by determining a turn according to a specified unit (eg, a specified number of requests or a specified time). The memory controller 1100 may set a read-write switching point based on the number of requests performed in a read turn or a write turn. Alternatively, the memory controller 1100 may set a read-write switching point based on a time during which a read turn or a write turn is performed.

일 실시 예에 따르면, S420 단계에서, 메모리 컨트롤러(1100)는 읽기-쓰기 스위칭 포인트 이전에 근접 스위칭 포인트를 설정할 수 있다. 예를 들면, 메모리 컨트롤러(1100)는 현재 턴에서 처리된 입출력 요청들의 수에 기초하여 근접 스위칭 포인트를 설정할 수 있다. 메모리 컨트롤러(1100)는 현재 턴(예: 쓰기 턴)의 요청 정보(예: 쓰기 요청 정보(1112))를 확인할 수 있다. 메모리 컨트롤러(1100)는 현재 턴의 페이지-히트인 입출력 요청의 수(예: 4)를 확인할 수 있다. 메모리 컨트롤러(1100)는 최대 버스트(예: 8)와 현재 버스트(예: 4)의 버스트 차이 값(예: 8-4=4)을 확인할 수 있다. 메모리 컨트롤러(1100)는 버스트 차이 값과 페이지-히트인 입출력 요청의 수를 비교할 수 있다. 페이지-히트인 입출력 요청의 수가 버스트 차이 값보다 작으면, 메모리 컨트롤러(1100)는 계속 현재 턴의 스케줄링을 수행할 수 있다. 페이지-히트인 입출력 요청의 수가 버스트 차이 값보다 크거나 같아지면, 메모리 컨트롤러(1100)는 현재까지 처리된 입출력 요청들 중 마지막 요청(예: 제4 쓰기 요청(W4))의 다음에 근접 스위칭 포인트를 설정할 수 있다.According to an embodiment, in step S420, the memory controller 1100 may set the proximity switching point before the read-write switching point. For example, the memory controller 1100 may set the proximity switching point based on the number of I/O requests processed in the current turn. The memory controller 1100 may check request information (eg, write request information 1112) of a current turn (eg, write turn). The memory controller 1100 may check the number (eg, 4) of I/O requests that are page-hits of the current turn. The memory controller 1100 may check a burst difference value (eg, 8−4=4) between the maximum burst (eg, 8) and the current burst (eg, 4). The memory controller 1100 may compare the burst difference value with the number of I/O requests that are page hits. If the number of page-hit I/O requests is smaller than the burst difference value, the memory controller 1100 may continue to perform scheduling of the current turn. If the number of page-hit I/O requests is greater than or equal to the burst difference value, the memory controller 1100 switches to the next nearest switching point of the last request (eg, the fourth write request W4) among the I/O requests processed so far. can be set.

일 실시 예에 따르면, S430 단계에서, 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이에서, 메모리 컨트롤러(1100)는 현재 턴의 뱅크 요청의 스케줄링을 차단할 수 있다. 예를 들어 도 7을 참조하면, 메모리 컨트롤러(1100)는 현재 턴의 뱅크 요청(예: 액티브 요청(A22), 프리치지 요청(P31))의 스케줄링을 차단할 수 있다. 메모리 컨트롤러(1100)는 차단된 뱅크 요청에 대응하는 입출력 요청(예: 제6 쓰기 요청(W6))의 스케줄링을 차단할 수 있다. 메모리 컨트롤러(1100)는 아직 처리되지 않고 페이지-히트인 입출력 요청들(예: 제5 쓰기 요청(W5), 제7 쓰기 요청(W7) 내지 제9 쓰기 요청(W9))을 현재 턴에 스케줄링 할 수 있다.According to an embodiment, in step S430, between the proximity switching point and the read-write switching point, the memory controller 1100 may block scheduling of the bank request of the current turn. For example, referring to FIG. 7 , the memory controller 1100 may block scheduling of a bank request (eg, an active request A22 or a pre-chill request P31) of a current turn. The memory controller 1100 may block scheduling of an I/O request (eg, the sixth write request W6) corresponding to the blocked bank request. The memory controller 1100 may schedule I/O requests that have not yet been processed and are page hits (eg, the fifth write request W5, the seventh write request W7 to the ninth write request W9) in the current turn. can

일 실시 예에 따르면, S440 단계에서, 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이에서, 메모리 컨트롤러(1100)는 다음 턴의 뱅크 요청의 스케줄링을 허용할 수 있다. 예를 들어 도 7을 참조하면, 메모리 컨트롤러(1100)는 현재 턴(예: 쓰기 턴)의 차단된 뱅크 요청에 대응하는 메모리 뱅크(예: 제2 뱅크(BANK2), 제3 뱅크(BANK))에 다음 턴(예: 읽기 턴)의 뱅크 요청(예: 액티브 요청(A23), 프리차지 요청(P32))을 현재 턴에 스케줄링 할 수 있다. 이로 인해, 현재 턴에 스케줄링 된 다음 턴의 뱅크 요청에 대응하는 입출력 요청(예: 제2 읽기 요청(R2), 제3 읽기 요청(R3))은 도 4의 방법으로 스케줄링 된 경우보다 앞당겨서 다음 턴에 스케줄링 될 수 있다.According to an embodiment, in step S440, between the proximity switching point and the read-write switching point, the memory controller 1100 may permit scheduling of the bank request of the next turn. For example, referring to FIG. 7 , the memory controller 1100 stores a memory bank (eg, a second bank BANK2 and a third bank BANK) corresponding to a blocked bank request of a current turn (eg, a write turn). A bank request (eg, active request (A23), precharge request (P32)) of the next turn (eg, read turn) may be scheduled for the current turn. As a result, I/O requests (e.g., the second read request (R2) and the third read request (R3)) corresponding to the bank request of the next turn scheduled for the current turn are scheduled earlier in the next turn than when scheduled in the method of FIG. can be scheduled on

도 12는 일 실시 예에 따른 모바일 시스템을 나타내는 도면이다. 도 12를 참조하면, 모바일 시스템(2000)은 응용 프로세서(2100) 및 메모리 장치(2200)를 포함할 수 있다. 응용 프로세서(2100)는 메모리 컨트롤러(2110)를 포함할 수 있다. 메모리 장치(2200)는 제어 로직(2220) 및 메모리 코어(2210)를 포함할 수 있다.12 is a diagram illustrating a mobile system according to an exemplary embodiment. Referring to FIG. 12 , a mobile system 2000 may include an application processor 2100 and a memory device 2200 . The application processor 2100 may include a memory controller 2110 . The memory device 2200 may include a control logic 2220 and a memory core 2210 .

일 실시 예에 따르면, 메모리 컨트롤러(2100)는 각종 신호를 메모리 장치(2200)에 제공함으로써, 메모리 장치(2200)의 전반적인 동작을 제어할 수 있다. 예를 들면, 메모리 컨트롤러(2100)는 읽기(read) 및 쓰기(write) 등과 같은 메모리 장치(2200)의 메모리 액세스 동작을 제어할 수 있다. 메모리 컨트롤러(2100)는 커맨드(CMD) 및 어드레스(ADDR)를 메모리 장치(1200)에 제공함으로써, 메모리 장치(2200)에 데이터(DATA)를 기입하거나, 또는 메모리 장치(1200)로부터 데이터(DATA)를 독출할 수 있다. 또한, 메모리 컨트롤러(2100)는 메모리 장치(2200)에 클럭 신호(CLK)를 더 제공할 수 있다.According to an embodiment, the memory controller 2100 may control overall operations of the memory device 2200 by providing various signals to the memory device 2200 . For example, the memory controller 2100 may control memory access operations of the memory device 2200 such as read and write. The memory controller 2100 provides the command CMD and the address ADDR to the memory device 1200 to write data DATA into the memory device 2200 or to write data DATA from the memory device 1200. can be read. Also, the memory controller 2100 may further provide a clock signal CLK to the memory device 2200 .

일 실시 예에 따르면, 메모리 장치(2200)는 메모리 컨트롤러(2100)에 의해 읽기 요청된 데이터(DATA)를 메모리 컨트롤러(2100) 측으로 출력하거나, 메모리 컨트롤러(2100)에 의해 쓰기 요청된 데이터(DATA)를 메모리 셀에 저장할 수 있다. 메모리 장치(2200)는 커맨드(CMD), 어드레스(ADDR) 및 클럭 신호(CLK)에 기초하여 데이터(DATA)를 입출력할 수 있다. 메모리 장치(2200)는 메모리 코어(2210) 및 제어 로직(2220)을 포함할 수 있다. 메모리 코어(2210)는 뱅크 단위로 구분되는 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 복수의 메모리 뱅크를 포함할 수 있다.According to an embodiment, the memory device 2200 outputs data (DATA) requested to be read by the memory controller 2100 to the memory controller 2100 or write-requested data (DATA) by the memory controller 2100. can be stored in a memory cell. The memory device 2200 may input/output data DATA based on the command CMD, the address ADDR, and the clock signal CLK. The memory device 2200 may include a memory core 2210 and a control logic 2220 . The memory core 2210 may include a memory cell array divided into banks. A memory cell array may include a plurality of memory banks.

일 실시 예에 따르면, 메모리 컨트롤러(2100)는 읽기-쓰기 스케줄러(2110)를 포함할 수 있다. 예를 들면, 읽기-쓰기 스케줄러(2110)는 메모리 장치(2200)로 전송되는 뱅크 요청(예: 액티브 요청 및 프리차지 요청) 및 입출력 요청(예: 읽기 요청 및 쓰기 요청)의 전송 순서를 결정할 수 있다. 뱅크 요청은 읽기 요청에 대응하는 뱅크 요청 또는 쓰기 요청에 대응하는 뱅크 요청을 포함할 수 있다. 읽기-쓰기 스케줄러(2110)는 읽기 요청과 쓰기 요청이 분리되어 전송되도록 스케줄링 할 수 있다. 읽기-쓰기 스케줄러(2110)는 지정된 단위(예: 지정된 요청들의 수 또는 지정된 시간)에 따라 턴을 정하여 일정량의 읽기 요청들 또는 쓰기 요청들이 전송되도록 스케줄링 할 수 있다. 메모리 컨트롤러(2100)는 도 6 내지 도 11의 방법에 따라 읽기-쓰기 스케줄링 동작을 수행할 수 있다.According to an embodiment, the memory controller 2100 may include a read-write scheduler 2110. For example, the read-write scheduler 2110 may determine the transmission order of bank requests (eg, active requests and precharge requests) and I/O requests (eg, read requests and write requests) transmitted to the memory device 2200 . there is. The bank request may include a bank request corresponding to a read request or a bank request corresponding to a write request. The read-write scheduler 2110 may schedule a read request and a write request to be transmitted separately. The read-write scheduler 2110 may schedule a certain amount of read requests or write requests to be transmitted by determining a turn according to a specified unit (eg, a specified number of requests or a specified time). The memory controller 2100 may perform a read-write scheduling operation according to the method of FIGS. 6 to 11 .

일 실시 에에 따르면, 메모리 컨트롤러(2100)(또는 읽기-쓰기 스케줄러(2110))는 읽기 요청과 쓰기 요청이 분리되어 전송되도록 스케줄링 할 수 있다. 예를 들면, 읽기-쓰기 스케줄러(1110)는 지정된 단위(예: 지정된 요청들의 수 또는 지정된 시간)에 따라 턴을 정하여 일정량의 읽기 요청들 또는 쓰기 요청들이 전송되도록 스케줄링 할 수 있다. 일 예로, 읽기-쓰기 스케줄러(1110)는 읽기 요청들이 수행되는 턴과 쓰기 요청들이 수행되는 턴이 전환되는 읽기-쓰기 스위칭 포인트를 설정할 수 있다. 읽기-쓰기 스케줄러(1110)는 읽기 턴 또는 쓰기 턴에서 수행되는 요청들의 개수에 기초하여 읽기-쓰기 스위칭 포인트를 설정할 수 있다. 또는 읽기-쓰기 스케줄러(1110)는 읽기 턴 또는 쓰기 턴이 수행되는 시간에 기초하여 읽기-쓰기 스위칭 포인트를 설정할 수 있다.According to one embodiment, the memory controller 2100 (or the read-write scheduler 2110) may schedule a read request and a write request to be transmitted separately. For example, the read-write scheduler 1110 may schedule a certain amount of read requests or write requests to be transmitted by determining a turn according to a specified unit (eg, a specified number of requests or a specified time). For example, the read-write scheduler 1110 may set a read-write switching point at which a turn in which read requests are performed and a turn in which write requests are performed are switched. The read-write scheduler 1110 may set a read-write switching point based on the number of requests performed in a read turn or a write turn. Alternatively, the read-write scheduler 1110 may set a read-write switching point based on a time at which a read turn or a write turn is performed.

일 실시 에에 따르면, 메모리 컨트롤러(2100)(또는 읽기-쓰기 스케줄러(2110))는 읽기-쓰기 스위칭 포인트 이전에 근접 스위칭 포인트를 설정할 수 있다. 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이에서, 메모리 컨트롤러(2100)(또는 읽기-쓰기 스케줄러(2110))는 불필요한 뱅크 요청의 스케줄링을 차단할 수 있다. 이에, 메모리 컨트롤러(2100)(또는 읽기-쓰기 스케줄러(2110))는 불필요한 전력 소비를 감소시킬 수 있다. 또한, 메모리 컨트롤러(2100)(또는 읽기-쓰기 스케줄러(2110))는 현재 턴의 근접 스위칭 포인트와 읽기-쓰기 스위칭 포인트 사이에 다음 턴의 뱅크 요청을 스케줄링 할 수 있다. 이로 인해, 읽기-쓰기 스위칭 포인트 전후에 데이터(DATA)의 공백 시간은 도 4의 경우보다 감소할 수 있다. 따라서, 읽기-쓰기 전환 시 소요되는 레이턴시(latency)는 감소하고, 모바일 시스템(2000)의 성능은 향상될 수 있다. 상술한 방법을 통해, 메모리 컨트롤러(2100)(또는 읽기-쓰기 스케줄러(2110))는 모바일 시스템(2000)의 메모리 대역폭을 향상시킬 수 있다.According to one embodiment, the memory controller 2100 (or the read-write scheduler 2110) may set the proximity switching point before the read-write switching point. Between the proximity switching point and the read-write switching point, the memory controller 2100 (or the read-write scheduler 2110) may block scheduling of unnecessary bank requests. Accordingly, the memory controller 2100 (or the read-write scheduler 2110) can reduce unnecessary power consumption. In addition, the memory controller 2100 (or the read-write scheduler 2110) may schedule a bank request of the next turn between the adjacent switching point of the current turn and the read-write switching point. As a result, the blank time of the data DATA before and after the read-write switching point may be reduced compared to the case of FIG. 4 . Accordingly, latency required for read-write conversion can be reduced, and performance of the mobile system 2000 can be improved. Through the above method, the memory controller 2100 (or the read-write scheduler 2110) can improve the memory bandwidth of the mobile system 2000.

상술한 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술한 실시 예들 이외에도, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술한 실시 예들에 국한되어 정해져서는 안되며, 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.The foregoing are specific examples for carrying out the present invention. In addition to the above-described embodiments, the present invention will also include embodiments that can be simply or easily changed in design. In addition, the present invention will also include techniques that can be easily modified and practiced using the embodiments. Therefore, the scope of the present invention should not be limited to the above-described embodiments and should not be defined, and should be defined by those equivalent to the claims of this invention as well as the claims to be described later.

Claims (20)

메모리 시스템에 있어서,
복수의 뱅크 단위로 구분되는 메모리 셀 어레이를 포함하는 메모리 장치; 및
상기 메모리 셀 어레이에 포함된 메모리 뱅크들에 데이터를 입출력하기 위해 읽기 요청들 또는 쓰기 요청들을 상기 메모리 장치로 전달하고, 읽기-쓰기 스위칭 포인트를 기점으로 상기 읽기 요청들을 상기 쓰기 요청들과 구분하여 전달하는 메모리 컨트롤러를 포함하되,
상기 메모리 컨트롤러는,
상기 읽기 요청들 또는 상기 쓰기 요청들을 포함하는 입출력 요청들의 현재 턴에 있어서, 상기 입출력 요청들 중 상기 현재 턴에서 처리된 입출력 요청들의 수에 기초하여 상기 읽기-쓰기 스위칭 포인트 이전에 근접 스위칭 포인트를 설정하고,
상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서 상기 현재 턴에서 스케줄링 예정인 적어도 하나의 제1 예비 입출력 요청을 위해 상기 메모리 뱅크들의 상태를 전환하는 적어도 하나의 제1 뱅크 요청이 스케줄링 되는 것을 차단하고,
상기 읽기-쓰기 스위칭 포인트 이후에 다음 턴에서 스케줄링 예정인 제2 예비 입출력 요청들을 위해 상기 메모리 뱅크들의 상태를 전환하는 제2 뱅크 요청들 중 적어도 하나가 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에 스케줄링 되도록 제어하는 메모리 시스템.
In the memory system,
a memory device including a memory cell array divided into a plurality of bank units; and
To input/output data to memory banks included in the memory cell array, read requests or write requests are transmitted to the memory device, and the read requests are separated from the write requests based on a read-write switching point and transmitted. Including a memory controller that
The memory controller,
In a current turn of I/O requests including the read requests or the write requests, a proximity switching point is set before the read-write switching point based on the number of I/O requests processed in the current turn among the I/O requests. do,
Blocking at least one first bank request for switching states of the memory banks from being scheduled for at least one first preliminary I/O request scheduled to be scheduled in the current turn between the proximity switching point and the read-write switching point; ,
After the read-write switching point, at least one of the second bank requests for switching the states of the memory banks for second reserve input/output requests scheduled to be scheduled in the next turn is between the proximity switching point and the read-write switching point. A memory system that controls what is scheduled.
제1항에 있어서,
상기 제1 뱅크 요청들 또는 상기 제2 뱅크 요청들은,
상기 메모리 뱅크들 중 하나를 액티브 상태로 전환하는 액티브 요청; 및
상기 메모리 뱅크들 중 액티브 상태인 메모리 뱅크를 스탠바이 상태로 전환하는 프리차지 요청을 포함하는 메모리 시스템.
According to claim 1,
The first bank requests or the second bank requests,
an active request for switching one of the memory banks into an active state; and
and a precharge request for converting an active memory bank among the memory banks to a standby state.
제1항에 있어서,
상기 메모리 컨트롤러는 상기 현재 턴에서 수행 예정인 입출력 요청들의 최대 요청 개수 또는 지정된 시간에 따라 상기 읽기-쓰기 스위칭 포인트를 설정하는 메모리 시스템.
According to claim 1,
The memory system of claim 1 , wherein the memory controller sets the read-write switching point according to a maximum number of input/output requests scheduled to be performed in the current turn or a specified time.
제3항에 있어서,
상기 메모리 컨트롤러는,
상기 현재 턴에서 스케줄링 예정인 입출력 요청들 중 현재 액티브 상태인 메모리 뱅크들과 뱅크 값 및 열 값이 동일한 페이지-히트 요청들의 수를 획득하고,
상기 최대 요청 개수와 상기 현재 턴에서 처리된 상기 입출력 요청들의 개수의 차이 값을 획득하고,
상기 페이지-히트 요청들의 수가 상기 차이 값보다 작은 경우, 상기 현재 턴에서 처리된 입출력 요청들이 처리 완료된 시점을 상기 근접 스위칭 포인트로 설정하는 메모리 시스템.
According to claim 3,
The memory controller,
obtaining the number of page-hit requests having the same bank value and row value as those of currently active memory banks among I/O requests to be scheduled for the current turn;
Obtaining a difference value between the maximum number of requests and the number of input/output requests processed in the current turn;
and when the number of page-hit requests is smaller than the difference value, setting a point in time at which input/output requests processed in the current turn are processed is set as the proximity switching point.
제1항에 있어서,
상기 메모리 컨트롤러는,
상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서,
상기 현재 턴에 스케줄링 예정된 입출력 요청들 중 현재 액티브 상태인 메모리 뱅크들과 뱅크 값 및 열 값이 다른 입출력 요청을 상기 현재 턴에 스케줄링 하지 않는 메모리 시스템.
According to claim 1,
The memory controller,
Between the proximity switching point and the read-write switching point,
The memory system of claim 1 , wherein among the I/O requests scheduled to be scheduled in the current turn, I/O requests having different bank values and row values from memory banks currently in an active state are not scheduled in the current turn.
제5항에 있어서,
상기 메모리 컨트롤러는,
상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서,
상기 현재 턴에 스케줄링 예정된 입출력 요청들 중 현재 액티브 상태인 메모리 뱅크들과 뱅크 값 및 열 값이 동일한 입출력 요청을 상기 현재 턴에 모두 스케줄링 하는 메모리 시스템.
According to claim 5,
The memory controller,
Between the proximity switching point and the read-write switching point,
The memory system of claim 1 , wherein among I/O requests scheduled to be scheduled for the current turn, all I/O requests having the same bank value and row value as memory banks currently in an active state are scheduled during the current turn.
제1항에 있어서,
상기 메모리 컨트롤러는,
호스트로부터 수신되는 상기 읽기 요청들을 저장하는 읽기 요청 큐;
상기 호스트로부터 수신되는 상기 쓰기 요청들을 저장하는 쓰기 요청 큐;
상기 읽기 요청들 또는 상기 쓰기 요청들을 상기 메모리 뱅크들의 상태에 기초하여 상기 현재 턴 또는 상기 다음 턴에 스케줄링하는 읽기-쓰기 스케줄러; 및
상기 읽기-쓰기 스케줄러의 입출력 요청들의 스케줄링에 따라 상기 읽기 요청들, 상기 쓰기 요청들 및 상기 메모리 뱅크들의 상태를 전환하는 뱅크 요청들을 상기 메모리 장치로 전송하는 중재 회로를 포함하는 메모리 시스템.
According to claim 1,
The memory controller,
a read request queue storing the read requests received from a host;
a write request queue storing the write requests received from the host;
a read-write scheduler that schedules the read requests or the write requests in the current turn or the next turn based on states of the memory banks; and
and an arbitration circuit that transmits the read requests, the write requests, and bank requests for switching states of the memory banks to the memory device according to the scheduling of the I/O requests of the read-write scheduler.
제7항에 있어서,
상기 읽기 요청 큐 또는 상기 쓰기 요청 큐는 상기 읽기 요청들 또는 상기 쓰기 요청들 각각에 대응하는 뱅크 정보 및 열 정보를 포함하고, 상기 읽기 요청들의 처리 여부를 나타내는 유효 정보를 포함하는 메모리 시스템.
According to claim 7,
The read request queue or the write request queue includes bank information and column information corresponding to each of the read requests or the write requests, and includes valid information indicating whether the read requests are processed.
제8항에 있어서,
상기 읽기-쓰기 스케줄러는,
상기 중재 회로에 의해 상기 읽기 요청들 또는 상기 쓰기 요청들 중 하나가 상기 메모리 장치로 전송되면, 상기 읽기 요청 큐 또는 상기 쓰기 요청 큐의 상기 뱅크 정보, 상기 열 정보 및 상기 유효 정보를 갱신하고, 갱신된 정보에 기초하여 상기 근접 스위칭 포인트를 결정하는 메모리 시스템.
According to claim 8,
The read-write scheduler,
When one of the read requests or the write requests is transmitted to the memory device by the arbitration circuit, update the bank information, the column information, and the valid information of the read request queue or the write request queue, and update A memory system for determining the proximity switching point based on the received information.
제7항에 있어서,
상기 중재 회로는 상기 읽기-쓰기 스케줄러로부터 수신된 상기 입출력 요청들의 스케줄링에 기초하여 상기 입출력 요청들, 상기 입출력 요청들에 대응하는 액티브 요청들 및 상기 입출력 요청들에 대응하는 프리차지 요청들 순서로 우선순위를 결정하는 메모리 시스템.
According to claim 7,
The arbitration circuit prioritizes the input/output requests, active requests corresponding to the input/output requests, and precharge requests corresponding to the input/output requests in order based on the scheduling of the input/output requests received from the read-write scheduler. The memory system that determines the ranking.
제1항에 있어서,
상기 메모리 컨트롤러는,
상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에 스케줄링 된 상기 제2 뱅크 요청들 중 적어도 하나에 대응하는 입출력 요청을 상기 다음 턴에서 가장 먼저 스케줄링 하는 메모리 시스템.
According to claim 1,
The memory controller,
and scheduling an I/O request corresponding to at least one of the second bank requests scheduled between the proximity switching point and the read-write switching point first in the next turn.
메모리 시스템에 있어서,
복수의 뱅크 단위로 구분되는 메모리 셀 어레이를 포함하는 메모리 장치; 및
상기 메모리 셀 어레이에 포함된 메모리 뱅크들에 데이터를 입출력하기 위해 읽기 요청들 또는 쓰기 요청들을 상기 메모리 장치로 전달하고, 읽기-쓰기 스위칭 포인트를 기점으로 상기 읽기 요청들을 상기 쓰기 요청들과 구분하여 전달하는 메모리 컨트롤러를 포함하되,
상기 메모리 컨트롤러는,
상기 읽기 요청들 또는 상기 쓰기 요청들을 포함하는 입출력 요청들의 현재 턴에 있어서, 상기 현재 턴에서 처리된 상기 입출력 요청들의 수에 기초하여 상기 읽기-쓰기 스위칭 포인트 이전에 근접 스위칭 포인트를 설정하고,
상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서 상기 현재 턴에서 스케줄링 예정인 적어도 하나의 예비 입출력 요청을 위해 상기 메모리 뱅크들 중 하나를 액티브 상태로 전환하는 제1 액티브 요청이 스케줄링 되는 것을 차단하도록 제어하는 메모리 시스템.
In the memory system,
a memory device including a memory cell array divided into a plurality of bank units; and
To input/output data to memory banks included in the memory cell array, read requests or write requests are transmitted to the memory device, and the read requests are separated from the write requests based on a read-write switching point and transmitted. Including a memory controller that
The memory controller,
In a current turn of I/O requests including the read requests or the write requests, setting a proximity switching point before the read-write switching point based on the number of the I/O requests processed in the current turn;
Control to block a first active request for switching one of the memory banks into an active state from being scheduled for at least one preliminary input/output request scheduled to be scheduled in the current turn between the proximity switching point and the read-write switching point memory system.
제12항에 있어서,
상기 메모리 컨트롤러는,
상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서 상기 적어도 하나의 예비 입출력 요청을 위해 상기 메모리 뱅크들 중 액티브 상태인 메모리 뱅크를 스탠바이 상태로 전환하는 제1 프리차지 요청이 스케줄링 되는 것을 허용하도록 제어하는 메모리 시스템.
According to claim 12,
The memory controller,
Control to permit scheduling of a first precharge request for switching an active memory bank among the memory banks to a standby state for the at least one preliminary input/output request between the proximity switching point and the read-write switching point memory system.
제13항에 있어서,
상기 메모리 컨트롤러는,
상기 입출력 요청들의 다음 턴에 있어서, 상기 제1 액티브 요청에 대응하는 메모리 뱅크와 동일한 뱅크 주소를 가지는 입출력 요청을 위한 제2 액티브 요청 또는 제2 프리차지 요청을 상기 다음 턴에서 가장 먼저 스케줄링하는 메모리 시스템.
According to claim 13,
The memory controller,
In a next turn of the I/O requests, a second active request or a second precharge request for an I/O request having the same bank address as a memory bank corresponding to the first active request is scheduled first in the next turn. .
제14항에 있어서,
상기 메모리 컨트롤러는,
상기 입출력 요청들의 다음 턴에 있어서, 상기 제1 프리차지 요청에 대응하는 메모리 뱅크와 동일한 뱅크 주소를 가지는 입출력 요청을 위한 제3 액티브 요청을 상기 제2 액티브 요청 또는 제2 프리차지 요청의 직후에 스케줄링하는 메모리 시스템.
According to claim 14,
The memory controller,
In a next turn of the I/O requests, scheduling a third active request for an I/O request having the same bank address as a memory bank corresponding to the first precharge request immediately after the second active request or the second precharge request. memory system to do.
메모리 시스템의 동작 방법에 있어서,
메모리 컨트롤러로부터 메모리 장치로 전송되는 읽기 요청들 또는 쓰기 요청들을 포함하는 입출력 요청들의 현재 턴에 있어서, 상기 현재 턴에서 수행 예정인 입출력 요청들의 최대 요청 개수 또는 지정된 시간에 따라 읽기-쓰기 스위칭 포인트를 설정하는 단계;
상기 입출력 요청들 중 상기 현재 턴에서 처리된 입출력 요청들의 수에 기초하여 상기 읽기-쓰기 스위칭 포인트 이전에 근접 스위칭 포인트를 설정하는 단계;
상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서, 상기 현재 턴에서 스케줄링 예정인 적어도 하나의 제1 예비 입출력 요청을 위해 상기 메모리 장치에 포함된 메모리 뱅크들의 상태를 전환하는 적어도 하나의 제1 뱅크 요청이 스케줄링 되는 것을 차단하는 단계; 및
상기 읽기-쓰기 스위칭 포인트 이후에 다음 턴에서 스케줄링 예정인 제2 예비 입출력 요청들을 위해 상기 메모리 뱅크들의 상태를 전환하는 제2 뱅크 요청들 중 적어도 하나를 상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에 스케줄링하는 단계를 포함하는 메모리 시스템의 동작 방법.
In the operating method of the memory system,
In a current turn of I/O requests including read requests or write requests transmitted from a memory controller to a memory device, setting a read-write switching point according to the maximum number of I/O requests scheduled to be performed in the current turn or a specified time step;
setting a proximity switching point before the read-write switching point based on the number of input/output requests processed in the current turn among the input/output requests;
At least one first bank request for switching states of memory banks included in the memory device for at least one first preliminary I/O request scheduled to be scheduled in the current turn between the proximity switching point and the read-write switching point Blocking this scheduling; and
After the read-write switching point, at least one of second bank requests for switching states of the memory banks for second preliminary input/output requests scheduled to be scheduled in a next turn is transferred between the proximity switching point and the read-write switching point. A method of operating a memory system comprising scheduling.
제16항에 있어서,
상기 근접 스위칭 포인트를 설정하는 단계는,
상기 현재 턴에서 스케줄링 예정인 입출력 요청들 중 현재 액티브 상태인 메모리 뱅크들과 뱅크 값 및 열 값이 동일한 페이지-히트 요청들의 수를 획득하는 단계;
상기 최대 요청 개수와 상기 현재 턴에서 처리된 상기 입출력 요청들의 개수의 차이 값을 획득하는 단계; 및
상기 페이지-히트 요청들의 수가 상기 차이 값보다 작은 경우, 상기 현재 턴에서 처리된 입출력 요청들이 처리 완료된 시점을 상기 근접 스위칭 포인트로 설정하는 단계를 포함하는 메모리 시스템의 동작 방법.
According to claim 16,
The step of setting the proximity switching point,
obtaining the number of page-hit requests having the same bank value and column value as memory banks currently in an active state among I/O requests scheduled to be scheduled in the current turn;
obtaining a difference value between the maximum number of requests and the number of input/output requests processed in the current turn; and
and setting, as the proximity switching point, when the number of page-hit requests is less than the difference value, when the I/O requests processed in the current turn are completed.
제16항에 있어서,
상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서,
상기 현재 턴에 스케줄링 예정된 입출력 요청들 중 현재 액티브 상태인 메모리 뱅크들과 뱅크 값 및 열 값이 다른 입출력 요청을 상기 현재 턴에 스케줄링 하지 않는 단계를 더 포함하는 메모리 시스템의 동작 방법.
According to claim 16,
Between the proximity switching point and the read-write switching point,
The method of operating a memory system further comprising not scheduling an input/output request having a different bank value and row value than currently active memory banks among input/output requests scheduled to be scheduled for the current turn, in the current turn.
제18항에 있어서,
상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에서,
상기 현재 턴에 스케줄링 예정된 입출력 요청들 중 현재 액티브 상태인 메모리 뱅크들과 뱅크 값 및 열 값이 동일한 입출력 요청을 상기 현재 턴에 모두 스케줄링 하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
According to claim 18,
Between the proximity switching point and the read-write switching point,
The method of operating a memory system further comprising scheduling all I/O requests having the same bank value and row value as memory banks currently in an active state among I/O requests scheduled to be scheduled for the current turn, during the current turn.
제16항에 있어서,
상기 근접 스위칭 포인트와 상기 읽기-쓰기 스위칭 포인트 사이에 스케줄링 된 상기 제2 뱅크 요청들 중 적어도 하나에 대응하는 입출력 요청을 상기 다음 턴에서 가장 먼저 스케줄링 하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
According to claim 16,
and scheduling an I/O request corresponding to at least one of the second bank requests scheduled between the proximity switching point and the read-write switching point first in the next turn.
KR1020220068915A 2022-02-21 2022-06-07 Memory system including memory device and memory controller and operating method thereof KR20230125706A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US18/150,626 US20230266893A1 (en) 2022-02-21 2023-01-05 Memory system including memory device and memory controller, and operating method thereof
CN202310181431.1A CN116627317A (en) 2022-02-21 2023-02-20 Memory system including memory device and memory controller and method of operating the same
EP23157816.2A EP4231162A1 (en) 2022-02-21 2023-02-21 Memory system including memory device and memory controller, and operating method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220021994 2022-02-21
KR1020220021994 2022-02-21

Publications (1)

Publication Number Publication Date
KR20230125706A true KR20230125706A (en) 2023-08-29

Family

ID=87802257

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220068915A KR20230125706A (en) 2022-02-21 2022-06-07 Memory system including memory device and memory controller and operating method thereof

Country Status (1)

Country Link
KR (1) KR20230125706A (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11221798B2 (en) 2018-08-17 2022-01-11 Apple Inc. Write/read turn techniques based on latency tolerance

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11221798B2 (en) 2018-08-17 2022-01-11 Apple Inc. Write/read turn techniques based on latency tolerance

Similar Documents

Publication Publication Date Title
EP3403184B1 (en) Apparatuses and methods for concurrently accessing multiple partitions of a non-volatile memory
KR100816053B1 (en) Memory device, memory system and dual port memory device with self-copy function
KR100909965B1 (en) A semiconductor memory system having a volatile memory and a nonvolatile memory sharing a bus and a method of controlling the operation of the nonvolatile memory
US9978430B2 (en) Memory devices providing a refresh request and memory controllers responsive to a refresh request
JP5043662B2 (en) Memory control method and memory system
US9606738B2 (en) Memory system with a bridge part provided between a memory and a controller
CN109240596B (en) Storage system and operation method thereof
KR20200108773A (en) Memory Device performing calculation process, Data Processing System having the same and Operation Method of Memory Device
KR102449333B1 (en) Memory system and read request management method thereof
US6091667A (en) Semiconductor memory device and a data reading method and a data writing method therefor
US6829195B2 (en) Semiconductor memory device and information processing system
US10325643B2 (en) Method of refreshing memory device and memory system based on storage capacity
US20020136079A1 (en) Semiconductor memory device and information processing system
US7536519B2 (en) Memory access control apparatus and method for accomodating effects of signal delays caused by load
US7778103B2 (en) Semiconductor memory device for independently selecting mode of memory bank and method of controlling thereof
KR100618858B1 (en) Semiconductor memory device capable of changing number of banks for refreshing when conducting refresh banks and Method of refresh thereof
KR102336666B1 (en) Memory device and memory system comprising the same
KR20230125706A (en) Memory system including memory device and memory controller and operating method thereof
EP4231162A1 (en) Memory system including memory device and memory controller, and operating method thereof
US10185510B2 (en) Bank interleaving controller and semiconductor device including the same
CN116627317A (en) Memory system including memory device and memory controller and method of operating the same
EP4379721A1 (en) Address decoding method, and memory controller and semiconductor memory system using the same
KR20240081027A (en) Address decoding method, and memory controller and semiconductor memory system using the same
US20070073961A1 (en) Memory controller
CN118113625A (en) Address decoding method, memory controller and semiconductor memory system